博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 编程下泛型的内部原理
阅读量:7021 次
发布时间:2019-06-28

本文共 881 字,大约阅读时间需要 2 分钟。

package cn.sunzn.generic;/*** 泛型是提供给 javac 编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序的非法输入,编译器编译带类型说明的集合* 时会去除掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样。对* 于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其他类型的数据,例如,用反射得* 到集合,再调用起add方法即可。*/import java.util.ArrayList;public class GenericDemo {   public static void main(String[] args) throws Exception {       ArrayList
list1 = new ArrayList<>(); ArrayList
list2 = new ArrayList<>(); System.out.println(list1.getClass().getName()); System.out.println(list2.getClass().getName()); System.out.println(list1.getClass() == list2.getClass()); list2.getClass().getMethod("add", Object.class).invoke(list2, "sunzn"); System.out.println(list2); }}

运行结果如下,通过了解泛型的内部原理和反射,我们成功的将一个 String 类型的数据添加到了一个 Integer 类型的集合中。

java.util.ArrayListjava.util.ArrayListtrue[sunzn]

 

转载地址:http://adbxl.baihongyu.com/

你可能感兴趣的文章
[解决后端使用ceph qem性能问题](升级kvm后使用virt-type=kvm(qemu-system-x86_64、qemu-kvm、qemu-img)...
查看>>
DevOps在完成大量资料学习后我总结了一下
查看>>
(Mac)VMware Fusion 安装centos ,mac访问不了centos里的web服务器解决方案
查看>>
android 实现保存图片到相册
查看>>
centos 最小化安装后安装vmtools故障后解决方法
查看>>
jquery $(document).ready() 与window.onload的区别
查看>>
Spring-rabbit 消息的接收与发送 配置及实例
查看>>
Response.setContentType()常用参数对应说明
查看>>
kubernetes 中的 Service
查看>>
Windroy—在Windows上运行Android系统
查看>>
读书计划
查看>>
想了解迅雷亲历面试的经历吗:笔试+上机+面试
查看>>
媒体查询
查看>>
手机分辨率有哪些
查看>>
MongoDB的分片集群的安装
查看>>
GuozhongCrawler系列教程 (4) StartContext详解
查看>>
MongoDB java操作的一些记录
查看>>
shell脚本案例
查看>>
Python基础03 序列
查看>>
SpringBoot入门第一节
查看>>