一、概念
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
二、功能
(1)在运行时判断任意一个对象所属的类
(2)在运行时构造任意一个类的对象
(3)在运行时判断任意一个类所具有的成员变量和方法
(4)在运行时调用任意一个对象的方法
注:要想使用反射,首先需要获得待处理类或对象所对应的Class对象
三、获取Class对象的方式
获取某个类或某个对象所对应的Class对象的常用的三种方式:
(a)使用Class类的静态方法forName
Class.forName("java.lang.String");
(b)使用类的.class语法
String.class;
(c)使用对象的getClass()方法
String s = "aa";
Class<?> classTest = s.getClass();
四、通过类的不带参数的构造方法生成对象
(1)先获得Class对象,然后通过该Class对象的newInstance()方法直接生成
Class<?> classType = String.class;
Object obj = classType.newInstance();
(2)先获得Class对象,然后通过该对象获得对应的Constructor对象,再通过该Constructor对象的newInstance()方法生成
Class<?> classType = String.class;
Constructor cons = classType.getConstructor(new Class[]{});
Object obj = cons.newInstace(new Object[]{});
五、通过类不带参数的构造方法生成对象
只能使用下面一种方式
Class<?> classType = String.class;
Constructor cons = classType.getConstructor(new Class[]{String.class,int.class});
Object obj = cons.newInstace(new Object[]{"hello",3});