------- android培训、java培训、期待与您交流! ----------
java中的反射机制是指运行状态中
对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
程序的运行也就是吧源程序编译成.class文件再运行
这个得运行状态就是指在java执行.class 文件
然后 能通过.class文件查询到源代码的信息(类 成员变量以及方法 等)
而要获取这写信息的第一步就是要 获取字节码文件
前提是给了个Student.class 文件
Class c = Class.getClass(".class文件的路径.Student");
在反射中之前的成员 构造方法 成员变量 成员方法 都封装成了类
所以需要先获取这些类 再通过类的方法去实现操作
获取构造方法
getConstructors() 获取构造方法 指能获取公共的
getDeclaredConstructors() 获取构造方法 私有的也可以获取
获取构造方式:
Constructor constructor = c.getConstructor();
通过无参构造方法创建对象:
Object obj = constructor.newInstance();
获取属性:
Field f = c.getField("属性名");
如果是私有的:
Field f = c.getDeclaredField("属性名");
需要多一步暴力解锁:
f.setAccessible(true);
用反射可以获取到任意给出的.class 文件里面的任意的类
应用举例:
public static void main(String[] args) throws Exception {
ArrayList<Integer> arrayList = new ArrayList<Integer>();//给出的集合
Class s= arrayList.getClass();//获取集合的字节码文件
Method m= s.getMethod("add", Object.class);//对add 方法进行处理
System.out.println(arrayList);
}
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------