Java学习笔记

JAVA学习笔记之 反射

2016-12-02  本文已影响6人  红姑娘

反射:通过一个class文件对象来使用该class文件中的构造方法,成员变量,成员方法。

相关方法:

  1. 方法:public static Class<?> forName(String className)
    意思:通过Class类的一个静态方法获得这个类的字节码对象
    使用:Class class = Class.forName("路径");

2.方法:public T newInstance()
意思:通过字节码对象获取Class的类的对象
使用:Object obj = class.newInstance(); // 其实调用的是类的无参构造方法。

  1. 方法:public Constructor<?>[] getConstructors()
    意思:通过字节码文件对象去获取所有公共的构造方法对象
    使用:Constructor[] cons = class.getConstructors();

4.方法:public Constructor<?>[] getDeclaredConstructors()
意思:通过字节码文件对象去获取所有的构造方法对象
使用:Constructor[] cons = class.getDeclaredConstructors();

5.方法:public Constructor getConstructor(Class<?>... parameterTypes)
意思:通过字节码文件对象去获取构造方法
使用:Constructor cons = class.getConstructor();//单个构造
Constructor con = c.getConstructor(String.class, int.class,
String.class);//多个构造

6.方法:public T newInstance(Object ... initargs)
意思:通过构造方法对象获取此对象
使用:Object obj = cons.newInstance();

7.方法:public void setAccessible(boolean flag)
意思:取消 Java 语言访问检查
使用:cons.setAccessible(true);

8.方法:public Field[] getFields()
意思:通过反射获取所有公共的成员变量
使用:Field[] fields = class.getFields();

9.方法:public Field getField(String name)
意思:通过反射获取获取单个成员变量
使用:Field addressField = class.getField("address");

10.方法:public void set(Object obj,Object value) 针对所有引用类型的成员变量而言
意思:给obj对象的address成员变量赋值为香港
使用:addressField.set(obj, "香港");

11.方法:public Field[] getDeclaredFields()
意思:通过反射获取所有成员变量
使用:Field[] fields = class.getDeclaredFields();

上一篇下一篇

猜你喜欢

热点阅读