Java泛型与反射

在Java中我们都知道泛型是在我们往集合里面添加一个元素的时候会进行合法性检查其实 Java中集合的泛型 是防止编译时 错误输入 只在编译阶段有效 绕过编译就无效了下面我们对此进行验证:在这里我们可以通过反射获取 ArrayList 集合的add方法 通过泛型设置 该集合的元素只能为String 类型 ArrayList list1 = new ArrayList(); public class Demo { public static void main(String[] args) { ArrayList list1 = new ArrayList(); list1.add("hello"); Class c1 = list1.getClass(); try { Method m = c1.getMethod("add", Object.class); m.invoke(list1, 123); } catch (Exception e) { e.printStackTrace(); } System.out.println(list1); for (String string : list1) { System.out.println(list1); } } } 运行结果为: [hello, 123]从结果可以看出 集合的泛型 仅仅在编译阶段编译之后集合是去泛型化的

你可能感兴趣的:(java)