import java.util.Arrays;
public class test {
public static void main(String[] arg) {
// 核心概念:告诉编译器想使用什么类型,编译器帮你处理一切
String str = new String("list");
// 泛型必须使用封装类型
List<String> list1 = new List<String>(str);
List<Integer> list2 = new List<Integer>(1);
// 类型擦除,Java的泛型仅仅只是通用Java编译器实现的,list1和list2在运行时事实上是相同的类型
// 获取list1 和list2查看字节码是否相同
System.out.println(Arrays
.toString(list1.getClass().getTypeParameters()));// [T]
System.out.println(Arrays
.toString(list2.getClass().getTypeParameters()));// [T]
System.out.println(list1.getClass() == list2.getClass());// true;
// ?通配符:表示任何类型,与object有区别
// list4只能放object类型
List<?> list3 = new List<String>(str);
List<Object> list4 = new List<Object>();
// List<Object> list = new List<String>(str);
}
}
class List<T> {
public List() {
}
public List(T t) {
this.t = t;
}
T GetValue() {
return t;
}
private T t;
}
java泛型
最新推荐文章于 2024-09-16 21:37:07 发布