反射
- 反射机制允许程序在执行期借助于reflection API取得任何类的内部信息(比如成员变量、构造器、成员方法等),并能操作对象的属性及方法
- 加载完类后,在堆中就产生了一个class类型的对象(一个类只有一个Class对象),这个对象包含了类的完整结构信息,通过这个对象得到类的结构
Java反射机制可以完成: - 在运行时判断任意一个对象所属的类
- 在运行时构造任意一个类的对象
- 在运行时得到任意一个类所具有的成员变量和方法
- 在运行时调用任意一个对象的成员变量和方法
- 生成动态代理
package reflection_;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Properties;
public class Reflection01 {
public static void main(String[] args) throws Exception {
Properties properties = new Properties();
properties.load(new FileInputStream("src/reflection_/re.properties"));
String classfullpath = properties.get("classfullpath").toString();
String methodName = properties.get("method").toString();
Class cls = Class.forName(classfullpath);
Object o = cls.newInstance();
Method method = cls.getMethod(methodName);
method.invoke(o);
Field ageField = cls.getField("age");
System.out.println(ageField);
System.out.println(ageField.get(o));
Constructor constructor = cls.getConstructor();
System.out.println(constructor);
Constructor constructor1 = cls.getConstructor(String.class);
System.out.println(constructor1);
}
}