如何创建Java POJO

3
我希望能够读取一个属性文件并从中创建一个POJO对象。其中属性键是实例变量,具有getter和setter方法;而属性值则是实例变量的数据类型。输入应该像这样:
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
如果不需要使用属性文件,您可以查看http://stackoverflow.com/questions/4787049/simple-code-generation - smp7d
2
看起来你想创建一个,而不是一个对象实例(这与术语Plain Old Java Object所暗示的不同)。 - maerics
您想从属性文件中生成类代码,还是填充现有类的值,或者两者都要? - Peter Lawrey
我想创建一个类而不是实例。 - user373201
4个回答

2

我曾经使用Apache Velocity生成Java文件,你可能想要了解一下。

简单来说,你可以模板化一个文件,然后使用它来生成你想要的内容。


我完全同意这种方法。Apache Velocity似乎非常适合这个任务。只需将模板的输出写入文件即可。 - aglassman

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 
}

1

Java反射专门用于动态实例化对象。但要注意性能损失。

反射通常被需要检查或修改在Java虚拟机中运行的应用程序的运行时行为的程序所使用。这是一个相对高级的功能,只应由对语言基础有深入了解的开发人员使用。在此前提下,反射是一种强大的技术,可以使应用程序执行本来不可能的操作。


+1:性能损失可能不像您预期的那样高,即几个微秒。 - Peter Lawrey
我认为这不是原帖作者所问的。 - vulkanino
我猜这是有歧义的。如果从元数据生成Java文件,那么反射就没用了。 - Nasir

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接