Java泛型
来源:互联网 发布:2017最新人工智能产品 编辑:程序博客网 时间:2024/06/03 09:21
1、泛型
Java泛型是JDK1.5之后出现的,可以在编译时期进行类型检查。
注意:泛型只在编译时期有效,编译后的字节码文件中不存在有泛型信息!
测试:
/* * 泛型擦除实例 public void save(List<Person> p){ } public void save(List<Dept> d){ // 报错: 与上面方法编译后一样,说明编译后字节码不存在泛型 } */
泛型方法
public <K,T> T save(T t,K k) { return null; }
泛型类
// 泛型类(在new这个类时传入类型)public class GenericDemo<T> { // 定义泛型方法 public <K> T save(T t,K k) { return null; } public void update(T t) { }}
泛型接口
// 泛型接口,在实现这个接口的类中指定类型public interface IBaseDao<T> { void save(T t ); void update(T t );}
public class BaseDao<T> implements IBaseDao<T> { ...}
public class PersonDao implements IBaseDao<Person>{ ...}
泛型关键字
泛型中? extends super
?的作用是:不知道接收的泛型类型,为了不失去泛型特性用来占位,这样接收的参数只可以访问,不可以修改
@Testpublic void test1(){ // ?可以接收任何泛型集合,但是不能编辑集合值,所以一般在方法参数中使用 List<?> list = new ArrayList<String>();// list.add("");//报错}
? extends Type
泛型类型继承自一个类型,必须传入Type的子类
public void save(List<? extends Number> list){}@Testpublic void test2(){ List<Integer> list1 = new ArrayList<>(); List<Float> list2 = new ArrayList<>(); List<String> list3 = new ArrayList<>(); // Integer和Float都继承自Number所以可以,String没有继承所以不行 save(list1); save(list2);// save(list3);//报错}
? super Type
super关键字和extends类似,必须传入Type的父类
阅读全文
0 0
- 【java 2】java泛型
- Java 泛型 Java generic
- Java Tutorials_Generics(java泛型)
- Java基础 Java 泛型
- java 泛型
- java泛型
- Java泛型
- Java泛型
- java泛型
- java泛型
- java泛型
- Java 泛型
- Java泛型
- Java 泛型
- JAVA 泛型
- java 泛型
- java泛型
- Java泛型
- SkinSharp For Visual C++
- Jenkins持续化构建Android项目(三)-Jenkins上传apk到fir(by 星空武哥)
- “ConfigurationManager”不是“Configuration”的成员
- 如何在CentOS 6.x/7.x上安装git及最新版
- 欢迎使用CSDN-markdown编辑器
- Java泛型
- bzoj 2434 [Noi2011]阿狸的打字机
- 基础网络概念(五)TCP/IP传输层相关封包与数据、TCP三次握手
- 使用JavaScript对常用浏览器的判断
- java、python、php、linux知识结构
- react-native run-android时,出现的小错误
- 第058讲 顺序查找 二分查找法
- Q&A——资源管理(七)
- HBase启动错误