泛型设计目的
- 省去运行时期类型检查的麻烦,在编译期即可解决
比如:
ArrayList files = new ArrayList();
. . .
String filename = (String) files.get(0);
或者add 操作等 - 显示包含的类型
- 需要很多强制转化的地方最好用泛型
- 类型检查的工作全部交给了编译器
unchecked warning
对于兼容以前的类型,比如Dictory
可以使用
Dictionary<Integer, Components> labelTable = slider.getLabelTable();
但是编译器不保证这个转化能对应上key和value,所以会warning,如果确定没问题,可以加入注解
@SuppressWarnings(“unchecked”)
但是声明ArrayList<Pair<Integer,Integer>>却不会有类似问题,
因为不存在objarray[0]这种操作,在使用get(0)之前,必须先进行初始化才可以使用
但可以通过参数化这种骚操作绕过编译器检查
官方推荐的反射用法
反射类,将Class声明为通配符Class<?>