package Demo2; import java.lang.reflect.Method; import java.util.ArrayList; public class MethodDemo { public static void main(String[] args) { ArrayList list = new ArrayList(); ArrayList<String> list1 = new ArrayList<>(); Class c1 = list.getClass(); Class c2 = list1.getClass(); //反射的操作都是编译之后的操作 /* *c1 == c2 结果返回true说明编译之后集合的泛型是去泛型化 *Java中集合的泛型,是防止错误输入的,只在编译阶段有效 * 绕过编译就无效了 * 验证:我们通过方法的反射来操作,绕过编译 * / */ try { Method m = c2.getMethod("add",Object.class); m.invoke(list1,100);//绕过编译操作就绕过了泛型 //现在就不能用foreah,因为本身类型就不一样 } catch (Exception e) { e.printStackTrace(); } } }
反射之高级泛型的应用
最新推荐文章于 2021-02-12 13:03:47 发布