反射实现读取文本信息进行对象的动态创建

Posted 艺海浮台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反射实现读取文本信息进行对象的动态创建相关的知识,希望对你有一定的参考价值。

 1 public class TestReflectApp {
 2 
 3     public static void main(String[] args) throws Exception {
 4         //
 5         InputStream is = new FileInputStream("D:\\eclipse-workspace-bigdata4\\Java25\\src\\objects.properties");
 6 //        byte[] bytes = new byte[is.available()];
 7 //        is.read(bytes);
 8 //        //is.close();
 9         //System.out.println(new String(bytes));//注意读取的话出现读到文件末尾,后面进行加载的话内容为空
10         Properties prop = new Properties();
11         prop.load(is);
12         
13         //
14         String objClass = prop.getProperty("object.class");
15         Class clazz = Class.forName(objClass);
16         Object obj = clazz.newInstance();
17         
18         //name
19         String propName = prop.getProperty("object.prop1.name");
20         String propValue = prop.getProperty("object.prop1.value");
21         Field f = clazz.getDeclaredField(propName);
22         if(f.getType() == String.class){
23             f.setAccessible(true);
24             f.set(obj, propValue);
25         }
26         
27         
28         //name
29         propName = prop.getProperty("object.prop2.name");
30         propValue = prop.getProperty("object.prop2.value");
31         f = clazz.getDeclaredField(propName);
32         if(f.getType() == int.class){
33             f.setAccessible(true);
34             Integer i = Integer.parseInt(propValue) ;
35             f.set(obj, i);
36         }
37         
38     }
39 
40 }

2、文本文件(放在根目录下)

  文件名:objects.properties

  object.class=com.it18zhang.java25.Person
  object.prop1.name=name
  object.prop1.value=tomas
  object.prop2.name=age
  object.prop2.value=20

以上是关于反射实现读取文本信息进行对象的动态创建的主要内容,如果未能解决你的问题,请参考以下文章

JavaLearn#(19)反射Class类使用反射创建对象-操作属性-执行方法泛型与反射反射案例

反射面试题

Java学习总结(十四)——java反射机制,利用反射动态创建对象

如何利用java的反射机制动态创建对象

Java反射

Java反射