验证反射机制的灵活性:
代码写一次,不用改变代码,只需该文件的内容,就可以创建不同类的实例对象,非常灵活。
先创建一个配置文件,以properties结尾:
测试代码:
package reflect;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class Test03 {
public static void main(String[] args) {
// 这种代码写死了,只能创建User对象
User u1 = new User();
System.out.println(u1);
// 使用反射机制创建对象的好处
FileReader fr = null;
try {
// 创建字符输入流对象
fr = new FileReader("IOtest\\reflecttest01.properties");
// 创建集合属性类对象
Properties pro = new Properties();
// 把文件内容加载到集合中
pro.load(fr);
// 通过key获取value
String value = pro.getProperty("className");
// 取得完整类名的Class文件
Class c = Class.forName(value);
// 开始创建对象
Object obj = c.newInstance();
System.out.println(obj);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}