码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础 (11) - 反射

时间:2019-09-07 01:22:24      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:成员变量   private   dna   对象   htm   关于   引用   eth   com   

能解决
Java中编译分为静态编译和动态编译。
静态编译:在编译时确定类型,绑定对象,即通过。
动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,从而降低类之间的藕合性。

能得到
实现Java反射机制的类都位于java.lang.reflect包中:
1、Class类:代表一个类
2、Field类:类的属性(成员变量)
3、Method类:类的方法
4、Constructor类:代表类的构造方法
5、Array类:提供了动态创建数组,以及访问数组的元素的静态方法
?

使用步骤
第一步:Class c = Class.forName("className”);//className必须为全名,也就是得包含包名
???Object obj=c.newInstance();//创建对象的实例????第二步:获取 Method:??   3.1 如何获取 Method:??     1). getDeclaredMethods得到 Method 的数组.??     2). getDeclaredMethod(String methondName, Class ... parameterTypes)?????   3.2 如何调用 Method??     1). 如果方法时 private 修饰的, 需要先调用 Method 的 setAccessible(true), 使其变为可访问??     2). method.invoke(obj, Object ... args);????第三步:关于 Field:??   4.1 如何获取 Field: getField(String fieldName)??   4.2 如何获取 Field 的值:???     1). setAccessible(true)??     2). field.get(Object obj)??   4.3 如何设置 Field 的值:??     field.set(Obejct obj, Object val)
参考:https://www.cnblogs.com/tech-bird/p/3525336.html???
各方案反射性能对比:https://www.cnblogs.com/zhishan/p/3195771.html

Java基础 (11) - 反射

标签:成员变量   private   dna   对象   htm   关于   引用   eth   com   

原文地址:https://blog.51cto.com/4397014/2436229

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!