List<String> list = new ArrayList<>(); 该写法正确
List list1 = new ArrayList<String>(); 该写法正确
List<String> list2 = new ArrayList<String>(); 该写法正确
list.add(111); 编译错误
list1.add(111);编译错误
list2.add(111);编译错误
由上面的代码可以知道,List<T>
T代表要求的数据类型,如果add的不是这种类型的数据,将阻止add。
自定义泛型类
public class Result<T> {
private T data;
public Result(){}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public static void main(String[] args) {
Result<String> stringBox = new Result<>();
stringBox.setData("aaa");
Result<Integer> integerBox = new Result<>();
integerBox.setData(111);
System.out.println(stringBox.getClass()); 结果 class xinyuandianzi.Result
System.out.println(integerBox.getClass()); 结果 class xinyuandianzi.Result
}
}
泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型。也就是编译的class文件是一样的,不管是Result<String>
,还是Result<Integer>
,都是Result
类型