我想通流读取properties文本里面的value,然后将value放到Class.forName()中,以此实现修改文本内容便可创建不同的对象,但是当我将通过properties.getProperty("ClassName")获取到的value放到Class.forName()中便会报错。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class Test03 {
public static void main(String[] args) throws Exception {
//创建流通道
FileInputStream fis = new FileInputStream("E:\\exe\\Class.properties");
//创建Properties MAP集合
Properties properties = new Properties();
properties.load(fis);
//通过key获取value
String s1= properties.getProperty("ClassName");
System.out.println(s1);//"com.test.ClassTest.Test02"
//再用反射通过value获取对象
Class aClass = Class.forName(s1);
Object o = aClass.newInstance();
System.out.println(o);
//关闭流
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
系统说没找到test02这个class,所以报错了啊
类加载器分为三种
根类加载器:加载“jdk/lib/rt.jar”
扩展类加载器:加载"jdk/lib/ext/"目录下的包
系统类加载器:加载"classpath"目录下的包
自定义类加载器:自己设置加载啥
而你,没有自定义,所以jvm就去前面三个类加载器加载的位置找你给的类,结果没找到,所以报错了。