转自: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 快速开发
扫荡波补丁WindowsXP-KB958644-x86-CHS,server服务经常被自动关闭、共享出现问题的朋友可要注意了哦
一款能检测显卡和CPU还要内存真实性能的工具。汉化版
恶魔城月下夜想曲完全图文攻略流程隐藏要素全扫荡资料全.doc
传说中的二级必过的绝密材料。有了它,公共不分就不愁过不去了。
清道夫基于QRCode的寻宝游戏所有Web代码都可以在这里访问: : 要创建代码,请将JSON文件构建为数组,每个QRCode包含一个对象。 在此仓库的python目录中可以找到一个示例文件:“ example_scvg.json” 对象的属性应为...
文字游戏 mud 终端源码 原始的文字网游 如西游记,侠客行等MUD游戏的终端源码
针对目前微加热表面汽泡动学研究结果存在分歧现象,对超纯水过冷核态池沸腾过程中微尺度铂金加热丝...汽泡扫荡是泡底液层不对称温度场和表面张力分布不均引起的横向热毛细作用的共同结果,模拟结果与相关实验观测吻合.
robocode 1.6最新版 robocode是一个特别java游戏,玩法需要玩家有高超的计算能力和java面向对象知识,同时对java的图形定位有很高要求 编一段代码,run it,看你的坦克机器人怎样扫荡吧
扫荡
《天下手游》9月2日更新内容 新增60级入门神话副本.docx
可以在此找到2018年夏季期间与该论文有关的数据。 可以在上找到与该研究相关的预先注册的报告。 首先,克隆存储库并确保满足所有系统要求。 系统要求: MatLab 2017或更高版本 心理物理学工具箱 Eyelink 1000 在...
大扫荡SXS S DASDADSDS SDSA
CAD图块石膏线,欧式雕花模型大全大扫荡极好模块下载。
神奇的上传漏单 社站必被当时的撒旦撒旦大扫荡大四的撒
360系统急救箱(原名:“顽固木马专杀大全”)是强力查杀木马病毒的系统救援工具,对各类流行的顽固木马查杀效果极佳,如犇牛、机器狗、灰鸽子、扫荡波、磁碟机等。在系统需要紧急救援、普通杀毒软件查杀无效,或是...
包括犇牛、机器狗、灰鸽子、扫荡波、磁碟机等在内的各种木马,都可以用360系统急救箱进行查杀。要查杀木马,用360系统急救箱! 360安全卫士6.0正式版已经搭载新一代云查杀引擎,拥有史上最强木马查杀能力。杀木马...
紧凑的额外维度的恒定基态能量与暗能量(真空能量)有关,而暗能量推动了当今我们三维空间的加速扩展。 在通常的G,C和哈勃常数h0 = 0.65的情况下,暗能量分数约为≈0.7。 通货膨胀后,仅作用于物质的强力即为有效...
扫荡者 维基百科数据可视化。
3.流行0day漏洞免疫,针对最流行的漏洞进行快速准确免疫(将不断关注流行漏洞并添加免疫修复)当前支持扫荡波(ms08-67),IE xml 0day(ms08-78)漏洞免疫.该产品不能替代金山漏洞扫描功能,其他漏洞请下载清理专家...