转自:https://mp.weixin.qq.com/s/L57fIW0SiLneusLSX11NFg
问:什么是 java 的反射?
答:反射是在运行时而非编译时动态获取类型的信息(譬如接口信息、成员信息、方法信息、构造方法信息等)然后依据这些动态获取到的信息创建对象、访问修改成员、调用方法等。
通过调用 Class.forName(clzss) 方法可以访问返回一个以指定字符串 clzss 为类名的类对象,因为 java 里面任何 class 都要装载在虚拟机上才能运行,所以那个方法的作用就是装载类用的,也可以直接通过类名.Class获取 Class 类对象,还可以通过实例.getClass() 方法获取 Class 类对象;Class 类提供了许多方法,譬如可以获取与类名称有关的信息,可以获取类中定义的字段 Field(静态和实例变量都被称为字段,可获取 public 与非 public 的字段)、Field 也提供了许多获取字段或者设置字段具体信息的操作,可以获取类中定义的方法 Method(静态方法和非静态方法都是方法,可获取 public 与非 public 的方法)、Method 也提供了许多获取方法信息、修饰符、参数、返回值、注解等、调用对象方法的操作;Class.newInstance()方法可以创建对象实例(只是用默认无参构造),不过也提供了一些其他方法获取所有构造方法;Class 还提供了类型检查、类型判断、修饰符、父类、接口、注解、内部类等操作的方法。
从 JVM 的角度使用关键字 new 创建一个类的时候这个类可以没有被加载,但是使用 newInstance() 方法的时候就必须保证这个类已经加载且这个类已经连接了,而完成上面两个步骤是 Class 的静态方法 forName() 所完成的,这个静态方法调用了启动类加载器(即加载 java API 的那个加载器),所以 newInstance() 实际上是把 new 这个方式分解为两步,即首先调用 Class 加载方法加载某个类然后实例化。
问:简单说说 java 反射的作用?
答:反射可以在运行时判断任意一个对象所属的类;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;在运行时构造任意一个类的对象;生成动态代理操作。
问:如何提高反射的效率?反射优缺点有哪些?
答:提高反射效率要考虑的问题如下,首先保证反射 API 最小化,譬如尽量使用 getMethod 直接获取而不是 getMethods 遍历查找获取;其次需要多次动态创建一个类的实例时尽可能的使用缓存。
反射虽然很灵活,有些时候能够使得写的代码变的大幅精简,但是在用的时候一定要注意具体的应用场景,因为反射的优点是能够运行时动态获取类的实例,大大提高系统的灵活性和扩展性,与 Java 动态编译相结合可以实现无比强大的功能;而其缺点就是性能相对较低,此外使用反射相对来说不安全,破坏了类的封装性(可以通过反射获取这个类的私有方法和属性),有些情况下反射受版本兼容问题而不稳定(譬如 Android 不同 ROM API 的修改)而难以提前发现问题。
相关推荐
标题中的“Java 后台管理静态HTML页面”指的是在Java Web开发中,使用Java技术作为后端服务器,处理业务逻辑和数据操作,并提供...如果遇到问题,可以查阅相关框架的官方文档,或者在社区如Stack Overflow上寻求帮助。
KB958644是这个补丁的编号,表示微软发布的这个安全更新是为了解决与扫荡波病毒相关的安全问题。"x86"表明这个补丁适用于32位的计算机系统,而"CHS"则代表中文版本。 描述中提到的“server服务经常被自动关闭”,这...
总的来说,这份"二级C公共部分知识完全打扫荡"资料涵盖了C语言的基础到进阶内容,从数据类型到文件操作,从基本语法到高级特性,都是考试的重点。通过深入学习和大量实践,考生可以巩固C语言基础,提高编程能力,...
一款能检测显卡和CPU还要内存真实性能的工具。汉化版
- 历史观基础:第九题提及英雄史观的理论前提,即社会意识决定社会存在,这是唯心主义历史观的一种表现。 9. 语境与词汇选用: - 词汇选择:第十题中,文学美的追求对应"理想",浩渺清空的神秘伟大对应"气象",...
【语文基础知识训练】这篇文档是针对2020届高三学生的语文高考基础知识的短期训练练习,旨在帮助学生在有限的时间内巩固和提升语文能力。题目包括了语言文字运用的考查,如字音辨析、错别字检查、成语运用、语病判断...
清道夫基于QRCode的寻宝游戏所有Web代码都可以在这里访问: : 要创建代码,请将JSON文件构建为数组,每个QRCode包含一个对象。 在此仓库的python目录中可以找到一个示例文件:“ example_scvg.json” 对象的属性应为...
针对目前微加热表面汽泡动学研究结果存在分歧现象,对超纯水过冷核态池沸腾过程中微尺度铂金加热丝...汽泡扫荡是泡底液层不对称温度场和表面张力分布不均引起的横向热毛细作用的共同结果,模拟结果与相关实验观测吻合.
【标题】:“广西蒙山县第学2019_2020学年高二语文上学期第二次月考试题.doc” 【描述】:“广西蒙山县第学2019_2020学年高二语文上学期第二次月考试题.doc” 【标签】:“中学试卷” 【部分内容】: 这篇文章...
- 控制面板窗口中项目的多少确实与系统软硬件配置有关,但题目中的描述并不准确,正确答案是**D**,因为控制面板本身并不会因为软硬件配置不同而改变其项目数量。 **5. Windows文件名规则** - 文件名中不能包含...
《恶魔城月下夜想曲》是一款深受玩家喜爱的动作冒险游戏,以其独特的哥特风格、丰富的游戏系统和精彩的剧情赢得了广大玩家的赞誉。本篇文档旨在提供一个全面的图文攻略,帮助玩家了解游戏流程、掌握隐藏要素,并熟悉...
文字游戏 mud 终端源码 原始的文字网游 如西游记,侠客行等MUD游戏的终端源码
robocode 1.6最新版 robocode是一个特别java游戏,玩法需要玩家有高超的计算能力和java面向对象知识,同时对java的图形定位有很高要求 编一段代码,run it,看你的坦克机器人怎样扫荡吧
这份文档是2015年下半年浙江省主治医师(公共卫生)主管技师考试的试题集,包含了多项选择题,涉及医学多个领域的专业知识,包括临床医学、预防医学、基础医学等。通过这些试题,我们可以了解到公共卫生领域医师所需...
扫荡功能进行了整合,现在普通副本与精英副本共用扫荡次数,并新增了扫荡卷功能,优先消耗该道具代替扫荡次数。这样,玩家可以根据自己的需求灵活选择扫荡方式。界面显示也进行了调整,采用章节地图+关卡图标的形式...
- 第三个题目是一个排序题,描述了一个烹饪流程,正确的顺序是购买青菜、去除枯叶、清洗、腌制、烹制。这反映了食品加工的基本步骤,从准备食材到最终烹饪。 4. 词语搭配与语境理解: - 第四个题目考察了词语的...
《天下手游》9月2日更新内容 新增60级入门神话副本.docx
通过解读“重阳”、“汉奸”、“轨道”、“陨落”、“扫荡”、“宿营”和“骚乱”等词语,学生能够更好地理解文中描述的历史背景和故事情节。这些词汇的含义与那个时代的社会情境息息相关,使学生能够更深入地融入...
可以在此找到2018年夏季期间与该论文有关的数据。 可以在上找到与该研究相关的预先注册的报告。 首先,克隆存储库并确保满足所有系统要求。 系统要求: MatLab 2017或更高版本 心理物理学工具箱 Eyelink 1000 在...
大扫荡SXS S DASDADSDS SDSA