之前学过的集合里面都有泛型,规定了泛型的类型以后,就不能往这个集合添加除了这个类型之外的类型数据了。

那么,有什么方法可以越过这个泛型,添加特定类型以外的类型数据么?

  例子:

     往ArrayList<Integer>集合中添加一个字符串String类型的数据

  分析:  

    通过查看ArrayList的add()方法,可以知道,add(E e)。E这个泛型是Object的。

    就可以通过反射来直接调用ArrayList集合的add方法进行添加

 1 public static void main(String[] args) throws Exception {
 2
 3         // 创建ArrayList集合对象
 4         ArrayList<Integer> array = new ArrayList<Integer>();
 5
 6         // 直接添加肯定不行
 7         // array.add("hello");
 8
 9         // 通过查看ArrayList的add()方法,可以知道,add(E e)。E这个泛型是Object的。
10         // 就可以通过反射来直接调用ArrayList集合的add方法进行添加
11
12         // 获取ArrayList集合的class字节文件对象
13         Class c = array.getClass();
14         // 获取add方法,方法需要的参数是Object类的
15         Method m = c.getMethod("add", Object.class);
16         // 调用add方法  使用array(AllayList)的add方法,添加“xxx”
17         m.invoke(array, "hello");
18         m.invoke(array, "world");
19
20         System.out.println(array); //[hello, world]
21
22     }

转载于:https://www.cnblogs.com/LZL-student/p/5967139.html

java 27 - 7 反射之 通过反射越过泛型检查相关推荐

  1. Java之通过反射越过泛型检查

    package cn.itcast_06;import java.lang.reflect.Method; import java.util.ArrayList;/** 我给你ArrayList< ...

  2. 反射——通过反射越过泛型检查

    一.目的 通过反射来越过泛型检查 二.应用场景 向 ArrayList <Integer> 中添加一个 字符串数据 代码: public static void main(String[] ...

  3. 反射练习之越过泛型检查

    案例需求 通过反射技术,向一个泛型为Integer的集合中添加一些字符串数据 代码实现 public class ReflectTest01 {public static void main(Stri ...

  4. [Java基础]反射练习之越过泛型检查,运行配置文件制定内容

    代码如下: package ReflectTest01;import java.lang.reflect.InvocationTargetException; import java.lang.ref ...

  5. 通过反射越过泛型检查

    package cn.learn.test;import java.lang.reflect.InvocationTargetException; import java.lang.reflect.M ...

  6. java 反射练习_JAVA反射的基础学习

    反射 :reflection 程序的一种内省机制 程序可以在运行期间动态的创建对象,获取对象类型,调用对象行为 内省机制在java和.net语言中有,在早期的C,C++,delphi,vb这些语言都没 ...

  7. java反射类型转换_java反射(转)

    反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一.反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道 ...

  8. java 反射代价_Java反射机制

    # 反射 ## 什么是反射 反射是Java提供的动态执行机制, 可以动态加载类, 动态创建对象, 动态访问属性, 动态调用方法.. 静态执行: Java代码经过编译以后就确定的执行次序, 称为静态执行 ...

  9. 深入理解Java类型信息(Class对象)与反射机制

    关联文章: 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解Java并发之synchronize ...

  10. java display.getdefault()_java基础(十一 )-----反射——Java高级开发必须懂的

    本文我们通过一个实际的例子来演示反射在编程中的应用,可能之前大家对反射的学习,仅仅是停留在概念层面,不知道反射究竟应用在哪,所以是一头雾水.相信通过这篇教程,会让你对反射有一个更深层次的认知. 概念 ...

最新文章

  1. 科大讯飞全新1024:3大计划,200项A.I.能力,全链路驱动应用场景创新!
  2. SQL Server 2008 认证之路
  3. 计算机二级c语言109套,2016年9月计算机二级C语言操作题109套讲述.docx
  4. 我们编写的C代码是怎样跑起来的?
  5. python中ttk和tkinter_python tkinter中ttk组件如何使用?
  6. HashMap转JavaBean
  7. 阿里辟谣:不会高薪聘请黑阿里网站的人;苹果欲用 iPhone 替代身份证和护照;Python 3.9.0b4 发布| 极客头条
  8. html 悬停显示标题,JS实现TITLE悬停长久显示效果完整示例
  9. html语言format,HTML 文本格式化
  10. 【转】勤奋小孩的遗言:没有理由不坚持。
  11. IntelliJ IDEA安装lombok
  12. 服务器虚拟计算节点,什么是云服务器计算节点
  13. Tess4J 安装及使用介绍
  14. k8s——Kubernetes配置yaml文件详解
  15. 常用的正则表达式,复制粘贴,正则就这么简单
  16. 工银亚洲银联卡到手!
  17. imshow函数的替代方案,非常方便
  18. VMware Workstation 15 Pro 激活密钥
  19. Python,网络爬虫selenium与pyautogui抓取新浪微博用户数据
  20. matlab基于SVM的手写字体识别,机器学习SVM--基于手写字体识别

热门文章

  1. .NET Oject And Json
  2. PostgreSQL是否区分大小写
  3. 窗口拖动后,还原窗口位置
  4. ExtraPhrase:一种针对抽象式(生成式)摘要的数据增强方法
  5. 【赛尔原创】如何自动地向知识图谱中添加属性?
  6. 【面经】字节算法面试三面
  7. 本周论文推荐(12.14-12.20)
  8. pyspark 学习笔记——pyspark安装
  9. pip太慢豆瓣下载地址
  10. 如何自动搜出更好、更小、更快的NLP模型?