java的泛型是一种伪泛型,就是只在编译的时候检查泛型类型,在多态中有一句话是说编译看左边,运行看右边。所以你要是这样写的话Vector v1=new Vector<String>(); 编译阶段认为,v1可以装任何类型的。
Vector v1=new Vector()和Vector v1=new Vector<String>();在编译时对于jvm是一样的。
运行的时候就不会检查类型了,就像我们使用反射可以给一个存储Integer类型的集合存放String类型- try {
- ArrayList<Integer> list = new ArrayList<Integer>();
- Method add = ArrayList.class.getDeclaredMethod("add", Object.class);
- add.invoke(list, "fancy");
- System.out.println(list.get(0));
- } catch (Exception e) {
- e.printStackTrace();
- }
复制代码 |