首页 > 代码库 > 【java】泛型的作用是在编译阶段防止错误输入,绕过编译就绕过泛型,可用反射验证
【java】泛型的作用是在编译阶段防止错误输入,绕过编译就绕过泛型,可用反射验证
1 package com.tn.collect; 2 3 import java.lang.reflect.Method; 4 import java.util.ArrayList; 5 6 public class Fanxin { 7 public static void main(String[] args){ 8 //泛型的作用是在编译阶段防止错误输入,绕过编译就绕过了泛型 9 //反射都是绕过编译操作 10 ArrayList<String> str=new ArrayList<String>(); 11 str.add("你好!"); 12 ArrayList str2=new ArrayList(); 13 14 //结果是true说明类类型是一样的,编译后是去泛型化的 15 System.out.println(str.getClass()==str2.getClass()); 16 System.out.println(str.getClass()==ArrayList.class); 17 18 //用add方法的反射 19 try{ 20 Method method=str.getClass().getMethod("add", new Class[]{Object.class}); 21 method.invoke(str, new Object[]{100}); 22 }catch(Exception e){ 23 e.printStackTrace(); 24 } 25 26 System.out.println(str.size()); 27 System.out.println(str); 28 29 for(String s:str){ 30 System.out.println(s); 31 } 32 } 33 }
运行结果:
true
true
2
[你好!, 100]
你好!
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at com.tn.collect.Fanxin.main(Fanxin.java:29)
【java】泛型的作用是在编译阶段防止错误输入,绕过编译就绕过泛型,可用反射验证
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。