转自: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年下半年浙江省主治医师(公共卫生)主管技师考试的试题集,包含了多项选择题,涉及医学多个领域的专业知识,包括临床医学、预防医学、基础医学等。通过这些试题,我们可以了解到公共卫生领域医师所需...
扫荡功能进行了整合,现在普通副本与精英副本共用扫荡次数,并新增了扫荡卷功能,优先消耗该道具代替扫荡次数。这样,玩家可以根据自己的需求灵活选择扫荡方式。界面显示也进行了调整,采用章节地图+关卡图标的形式...
2. 重要词语部分,解释了“重阳”、“汉奸”、“轨道”、“陨落”、“扫荡”、“宿营”和“骚乱”等词语的含义,这些词语与文本中的历史背景和故事情节紧密相关。 3. 作家作品部分介绍了作者杨朔的生平和作品,他是...
- 第三个题目是一个排序题,描述了一个烹饪流程,正确的顺序是购买青菜、去除枯叶、清洗、腌制、烹制。这反映了食品加工的基本步骤,从准备食材到最终烹饪。 4. 词语搭配与语境理解: - 第四个题目考察了词语的...
电影中的情节设计,如地球即将撞击木星时,人类选择扫荡木星而不是逃避,展现了中国人的不屈精神和敢于面对挑战的勇气,这与“有条件要上,没有条件创造条件也要上”的理念相吻合。同时,电影中对于亲情、责任和乡土...
《天下手游》9月2日更新内容 新增60级入门神话副本.docx