2012-03-07 73 views
3

我想读取一个属性文件并从中创建一个pojo。属性键是带有getters和setter的实例变量。属性值是实例变量的数据类型。输入会是这样的如何创建java pojo

className=Temp 
packageName=com.temp 
name=java.lang.String 

输出将

package com.temp; 
import java.lang.String; 
class Temp{ 
    private String name 

    //getters and setters 
} 

是什么做的最简单的方法。我应该创建一个文件并写入它,或者有更好的方法。

+1

解析属性文件,创建一个文本文件.java并在其中写入解析结果。 – vulkanino 2012-03-07 14:50:44

+0

如果它不需要是一个属性文件,你可能想看看http://stackoverflow.com/questions/4787049/simple-code-generation – smp7d 2012-03-07 14:54:31

+2

看来你想创建一个*类*,而不是对象实例(如术语Plain Old Java Object所暗示的)。 – maerics 2012-03-07 14:54:44

回答

2

我曾经使用Apache Velocity生成了一个Java文件,你可能想看看它。

总之你模板文件,然后用它来生成你想要的。

+0

我完全同意这种方法。 Apache Velocity似乎是完美的。只需将模板的输出写入文件即可。 – aglassman 2012-03-07 15:49:00

1

Java Reflection专门用于实时运行对象。不过要注意你的表现。

反射通常被需要能够检查或修改在Java虚拟机中运行的应用程序的运行时行为的程序所使用。这是一个相对较先进的功能,只能由对语言基础知识掌握较强的开发人员使用。考虑到这一点,反射是一种强大的技术,可以使应用程序执行本来不可能的操作。

+0

+1:它的性能可能并不像您预期​​的那么高。即几微秒。 – 2012-03-07 14:56:09

+0

我不认为这是OP的要求。 – vulkanino 2012-03-07 14:56:39

+0

我想这是不明确的。如果从元数据中生成一个java文件,那么反射就没用了。 – Nasir 2012-03-07 14:59:41

1
Properties properties = new Properties(); 
try 
{ 
    FileWriter outFile = new FileWriter("filename.java"); 
    properties.load(new FileInputStream("filename.properties")); 

    outFile.print("package "); 
    outFile.println(properties.getProperty("packageName")); 

    outFile.print("import "); 
    outFile.println(properties.getProperty("name")); 

    outFile.print("public class "); 
    outFile.println(properties.getProperty("className")); 
    outFile.println("{"); 
    // ... 
    outFile.println("}"); 

    outFile.close(); 
} 
catch (IOException e) 
{ 
    // handle the error 
}