获取到了Class能干什么?
传统创建对象
把代码写死了
User user = new User();
通过反射创建实例对象
测试类
package leetcode0606.reflect;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class ReflectTest03 {
public static void main(String[] args) {
//验证反射机制的灵活性
// java 代码写一遍 ,只改配置文件,十分灵活
// 符合 OCP (对扩展开放,对修改关闭)
try {
//读配置文件
FileReader reader = new FileReader("E:\\java\\Bigdata210224\\Phoenix0224\\classinfo.properties");
// 创建属性类对象Map
Properties pro = new Properties();
pro.load(reader);
reader.close();
String className = pro.getProperty("className");
//System.out.println(className);
Class c = Class.forName(className);
Object o = c.newInstance();
System.out.println(o);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
配置文件classinfo.properties
className=java.util.Date