黑马程序员技术交流社区
标题:
泛型与反射
[打印本页]
作者:
贾振凯
时间:
2013-3-27 23:54
标题:
泛型与反射
List<Integer> list = new ArrayList<Integer>();
list.getClass().getMethod("add", Object.class).invoke(list,"abc");
System.out.println(list.get(0));
复制代码
话说使用了泛型以后返回值类型是确定的,所以不用强转,
反射越过的屏障是编译器,但是list.get()不是用的反射
也就是说list.get(0)是知道返回的是Integer类型的,,,为毛最后还是可以成功打印abc
作者:
随风而去
时间:
2013-3-28 07:17
因为你用的是反射的方式去获得 List接口里面的dd方法, 把你的这段翻译一下就是这样
反射掉用list这个类的add方法新增一个值“abc”,这段代码里没有调用泛行
反射是去调用对象的低沉原类 而List这个类本身的泛型是空 他直接调用这个空的泛型了,除非你改写这个类 不然没用
你可以调用 Class里面的【 getAnnotation(Class<A> annotationClass) ;如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。】
这个方法 看看有没有泛型
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2