为什么要用内省和BeanUtils以及路径问题
2016-02-26 10:26
393 查看
1、原始方法,在一般框架中底层的用法obj.txt-----
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();
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();
相关文章推荐
- javascript匿名函数的理解
- 使用virsh调整运行中的KVM虚拟机内存,CPU(centos6.x)
- 纹理内存
- 用 strace 命令浅析 git push 通过 SSH 工作的原理
- 成都Uber优步司机奖励政策(2月26日)
- 类和类的静态变量
- 根据字段条件清理mysql数据库数据
- 二维码小工具使用指南
- activity_显示样式
- python系列之 - 面向对象(一)
- [慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时(转)
- 后台post get请求
- 欢迎使用CSDN-markdown编辑器
- 如何用ping检测代理服务器状态?
- 使用QTextCodec/QString/QByteArray/std::string时中文编码问题
- PDO简单操作
- AnimatedVectorDrawableCompat适配5.0以下安卓
- c++ static的作用,以及static对象在类和函数中区别
- 常量内存
- mysql复制表的操作