cn.Person
id=110
name=“李四”
Demo1.java----
public class Demo1{
public static void main(String[] args) {
Person p = (Person)getInstance(); System.out.println(p); }
public static Object getInstance() {
//根据配置文件产生对象的对象并把对象的属性值封装到对象中
BufferedReader br = new BufferedReader(new FileReader("obj.txt"));
String classname = br.readLine();
Class clazz = Class.forName(classname); Constructor constructor = clazz.getConstructor(null); Object o = constructor.newInstance(null); String line = null; while((line = br.readLine())!=null) { String[] datas = line.split("="); Field field = clazz.getDeclaredField(data[0]); if(field.getType()==int.class) { field.set(o,Integer.parseInt(datas[1])); } else{ field.set(o,datas[1]) } } return o; }
}
2、内省需要Get、Set方法:是个变态的反射。
3、BeanUtils:底层使用的内省,所以配置文件需要Get\Set方法,同时自动帮我们基本类型转换,如果需要特定类型转换(Date),需要注册转换器(ConvertUtils.register)
BeanUtils.set(p,"id",id);
4、
绝对路径:一般是包含盘符的,但是由于WIN和LINUX路径标志不同,所以很少用。
相对路径:相当于当前程序的,而在eclipse等都是通过控制台控制。
而真正使用的是.class文件,一般在project-name/cn/exmple/Demo.class。project-name/db.properties。
例如:Demo.class--->properties.load(new FileReader("db.properties"));
类文件路径:使用classpath的路径找相对应的资源文件。
如需要使用到类文件首先要获取到一个class对象。
例如:Class clazz = Demo.class;
clazz.getResourceAsStream("/db.properties"); //该方法就是使用了类文件路径
properties.load();