Java反射--通过反射了解集合泛型的本质
2015-04-25 18:03
399 查看
反射的操作都是编译之后的操作(即运行时刻)
编译之后集合的泛型是去泛型化的
* Java中集合的泛型,是防止错误输入的,只在编译阶段有效,
* 绕过编译就无效了
也就是说,我们可以通过方法的反射来操作,绕过编译,向智能添加String类型的集合添加int类型的数据也可以。
举例:
编译之后集合的泛型是去泛型化的
* Java中集合的泛型,是防止错误输入的,只在编译阶段有效,
* 绕过编译就无效了
也就是说,我们可以通过方法的反射来操作,绕过编译,向智能添加String类型的集合添加int类型的数据也可以。
举例:
package com.imooc.reflect; import java.lang.reflect.Method; import java.util.ArrayList; public class 反射和泛型 { public static void main(String[] args) { ArrayList list = new ArrayList(); ArrayList<String> list2 = new ArrayList<String>(); list2.add("Hello"); // list2.add(20);//错误 Class class1 = list.getClass(); Class class2 = list2.getClass(); System.out.println("class1==class2??"+(class1==class2)); //反射的操作都是编译之后的操作 /*class1==class2的比较结果返回true说明集合的泛型是去泛型话的 * 也就是说集合编译之后没有了泛型 * Java中集合的泛型,是防止错误输入的,绕过编译就无效了 */ try { Method method = class1.getMethod("add", Object.class); method.invoke(list2, 20);//反射后可以加进去int型的 System.out.println(list2.size()); //绕过编译操作就绕过了泛型 System.out.println("list2:"+list2); // // //那么就不能用forEach抛异常了 // for(String string:list2){ // System.out.println(string); // } } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- java反射--通过反射了解集合泛型的本质
- JAVA通过反射了解集合泛型本质
- 24、Java入门—反射之通过反射了解集合泛型的本质
- java反射之通过反射了解集合泛型的本质
- Java--Reflect(反射)专题6——通过反射了解集合泛型的本质
- java反射之通过反射了解集合泛型的本质(详解)
- Java反射(六)-Java通过反射了解集合泛型的本质
- Java反射(六)----- 通过反射了解集合泛型的本质
- [javaEE] 反射-通过反射了解集合泛型本质
- java中通过反射了解泛型的本质
- 通过反射了解集合泛型的本质
- 通过反射了解集合泛型本质
- 通过反射了解集合泛型的本质
- 通过反射了解集合泛型的本质
- 通过反射了解集合泛型的本质
- java反射学习笔记(4)----通过反射来了解泛型的本质
- 通过反射了解集合泛型的本质
- Java反射了解集合泛型的本质
- 通过反射了解泛型的本质
- 反射了解集合泛型的本质