Java反射

编译期间就确定了执行结果(静态)。
运行期调用,创建不确定的类和对象(动态效果)。
反射机制让java具有动态性。
在程序运行期间,动态获取类的信息以及动态调用对象方法。
Class类是反射的核心。
Class类包括包名,类名,成员变量,成员方法,构造方法和接口。
获取Class对象的方法
(1)通过 : 对象.getClass()获取。
Book book1=new Book();
class bookClass=book1.getClass();//返回jvm中的唯一的Class类。
不同的对象返回的Class文件时相同的。

(2)通过: 类名.class获取。
Book.class;
//同上。
因为返回的是相同的,所以可以作为锁。

(3)通过: Class.forName(“name”);
反射动态的基石

方法效率对比:
(1)4(2)8(3)50000
Java反射_第1张图片
构造器类Constructor,Constructor,Class
(1)获取构造方法
Class.getConsturctor()获得public构造器
(2)获取特定参数的构造器
Class.getConstructor(String.class);
(3)获取所有构造器(包括私有)
Class.getdeclaredConstructor();
Java反射_第2张图片
通过构造器创建具体类
constructor.newInstance()

Method类
获取方法
getMethod(方法名,方法参数类)
getDeclaredMethod()获取全部方法(包括私有)
执行方法
Method.invoke();
私有方法执行需要开放访问权限
Method.setAccessible(true);
Method.invoke(book,null);book是执行这个方法的对象。

Field成员变量
class.getFields;
Java反射_第3张图片
百万计以后才考虑反射的效率。

你可能感兴趣的:(java,java,开发语言)