大家好,又见面了,我是你们的朋友全栈君。
JAVA反射机制
1定义:
主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!
2.作用
A:反编译:.class–>.java
B:通过反射机制访问java对象的属性,方法,构造方法等;
这样好像更容易理解一些,下边我们具体看怎么实现这些功能。
3.获取Class对象有三种方式:
(1)..通过Object类的getClass()方法。例如:
Class c1 = new String(“”).getClass();
(2).通过Class类的静态方法——forName()来实现:
Class c2 = Class.forName(“MyObject”);
(3).如果T是一个已定义的类型的话,在java中,它的.class文件名:T.class就代表了 与其匹配的Class对象,例如:
Class c3 = Manager.class;
Class c4 = int.class;
Class c5 = Double[].class;
4.Class类中存在以下几个重要的方法:
a.getName()
一个Class对象描述了一个特定类的特定属性,而这个方法就是返回String形式的该类 的简要描述。由于历史原因,对数组的Class对象
调用该方法会产生奇怪的结果。
b.newInstance()
该方法可以根据某个Class对象产生其对应类的实例。需要强调的是,它调用的是此类 的默认构造方法。例如:
MyObject x = new MyObject();
MyObject y = x.getClass().newInstance();
c.getClassLoader()
返回该Class对象对应的类的类加载器。
d.getComponentType()
该方法针对数组对象的Class对象,可以得到该数组的组成元素所对应对象的Class对 象。例如:
int[] ints = new int[]{1,2,3};
Class class1 = ints.getClass();
Class class2 = class1.getComponentType();
而这里得到的class2对象所对应的就应该是int这个基本类型的Class对象。
e.getSuperClass()
返回某子类所对应的直接父类所对应的Class对象。
f.isArray()
判定此Class对象所对应的是否是一个数组对象。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143686.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...