java泛型入门篇
2022/7/7 1:22:29
本文主要是介绍java泛型入门篇,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
转自:
http://www.java265.com/JavaCourse/202206/3752.html
下文笔者讲述泛型的入门篇,如下所示:
泛型简介
泛型 从JDK5中就可以使用此语法糖 泛型的使用可在编译阶段约束操作的数据类型,并进行检查 泛型的语法: 泛型的语法格式:<数据类型> 泛型注意事项: 1.泛型只能支持引用数据类型 2.集合的全部接口和实现类都是支持泛型使用
泛型的优点
1.可提前约定数据类型 2.并且在编译阶段就确定数据类型 可避免强制类型转换的问题
例:泛型类的应用
public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("柳絮"); list.add("刘达龙"); list.add("张靓颖"); for (String s : list) { System.out.println(s); } }
自定义泛型类
我们将定义类同时指定一个泛型变量,这种类的定义模式 称之为“泛型类” 泛型类的格式 修饰符 class 类名<泛型变量> { } public class MyClassTest<E>{ }
例:自定义泛型类的示例
现创建一个泛型类,实现基本的增加、删除操作,以此来具体了解其用法: //泛型类MyArrayLIst public class MyClassTest<E> { public void add(E e){ 代码省略 } public void remove(E e){ 代码省略 } } //main public static void main(String[] args) { MyClassTest<String> list = new MyClassTest<>(); //通过对泛型的设定,实现对数据专一处理 list.add("刘畅"); list.add("艾米莉"); list.remove("叶问"); }
泛型类的原理
代码编译时,将泛型变量替换为真实的数据类型即可
自定义泛型方法
定义方法的同时指定泛型变量,我们将这种方法称之为“泛型方法” 泛型方法的格式: 修饰符<泛型变量> 返回值类型 方法名(形参列表){ } public <E> void view(E e){ } 泛型方法的功能: 方法中可以使用泛型接收一切实际类型的参数, 方法更具备通用性。 泛型方法注意事项: 泛型方法需要区别于泛型类中所定义的方法 虽然它们也在使用泛型 但是该泛型不是其定义的,而是泛型类定义
例:泛型方法的定义
public static void main(String[] args) { String [] name = {"柳荫","毛成","李明浩"}; view(name); Integer [] age = {18,16,20}; view(age); } //泛型方法的定义 public static <T> void view(T[] arr){ StringBuilder list = new StringBuilder(); for (int i = 0; i < arr.length; i++) { list.append(arr[i]).append("\t"); } System.out.println(list); }
自定义泛型接口
使用泛型定义的接口称之为"泛型接口" 泛型接口的格式: public interface User<E>{ } public interface User <E>{ } 泛型接口的功能: 泛型接口可以让实现类选择当前功能需要操作的数据类型
例: 定义一个User接口
实现对老师Teacher类、学生Student两个类的操作
//User接口 public interface User <E>{ void run(E e); void ageAdd(E e); } //Student类 public class Teacher { } //实现类Fantype public class Fantype implements User<Teacher> { @Override public void run(Teacher teacher) { } @Override public void ageAdd(Teacher teacher) { } } 从以上代码可以看出 User后定义的是泛型类型 并且用于到接口中的实际操作
通配符和上下限
通配符
?可以在“使用泛型”的时候代表一切类型 E T K V是在定义泛型的时候常用的字符,当然可以使用任意字符
上下限
上下限: 指我们传入泛型类型的最大子类和最小类型 如: 上限:<? extends 父类> :传入类型必须是该父类或者是父类的子类 下限:<? super 子类> :传入类型必须是该子类或者是子类的父类
例:
public static void testFun(ArrayList<? extends User> User){ //通过上下限便可以将这个问题解决掉 //要求传入的类型必须是User的子类才可以 }
这篇关于java泛型入门篇的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性