java 编译器反射_Java范型深入理解,利用反射穿透编译器忽略范型

Java中的范型的作用阶段是在 编译时,也就是说范型是给编译器看的    。

我们经常看到  类 ArrayList      后面的  就是类型化参数,说明这个 ArrayList支持  范型化   。

比如   ArrayList    就叫做Integer类型化的ArrayList.,当编译完之后 在运行阶段 就会丢掉 类型化参数   。

范型化后的 类型  与原始类型之间的操作:

Collection c=new Vector() ;          可以

Collection c=new Vector() ;  //也可以

Vector  ccc=new Vector();     //错误 因为 前后类型不匹配     Object'课代表任意类型

Vector[]  cccc=new Vector[10]();    //数组不能进行范型化 ,因为每个Vector本身就像当一个数组 每个数组都有自己的类型

Vector  v=new Vector() ;

Vector v1=v ;       //虽说前后类型不匹配但是也可以  因为编译器进行语法检查是一行行的往下走的    走到第二部的时候 v 就是原始没有 范型化的Vector对象

利用反射穿透编译器 忽略范型:

ArrayList  col1=new ArrayList() ;

col1.getClass().getMethod("add",Object.class).invoke(col1, "reflect") ;   //这个运行时候才会调用 于是就跳过了编译器

System.out.println(col1.get(0));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值