您的位置:首页 > 其它

为什么要用内省和BeanUtils以及路径问题

2016-02-26 10:26 393 查看
1、原始方法,在一般框架中底层的用法obj.txt-----
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: