【问题标题】:how to create java pojo如何创建java pojo
【发布时间】:2012-03-07 14:47:20
【问题描述】:

我想读取一个属性文件并从中创建一个 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
}

什么是最简单的方法来做到这一点。我应该创建一个文件并写入它。还是有更好的方法。

【问题讨论】:

  • 解析properties文件,创建文本文件.java,将解析结果写入其中。
  • 如果它不需要是属性文件,您可能需要查看stackoverflow.com/questions/4787049/simple-code-generation
  • 您似乎想创建一个,而不是一个对象实例(正如Plain Old Java Object 一词所暗示的那样)。
  • 您是要从属性文件生成类代码还是填充现有类的值,还是两者兼而有之?
  • 我想创建一个类而不是实例

标签: java properties text-parsing


【解决方案1】:

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

简而言之,您可以将文件模板化,然后使用它来生成您想要的内容。

【讨论】:

  • 我完全同意这种方法。 Apache Velocity 似乎很适合这个。只需将模板的输出写入文件即可。
【解决方案2】:

Java Reflection 专门用于动态实例化对象。但请注意您所受到的性能影响。

反射通常由需要能够检查或修改在 Java 虚拟机中运行的应用程序的运行时行为的程序使用。这是一个相对高级的特性,只应该由对语言基础有深入了解的开发人员使用。考虑到这一点,反射是一种强大的技术,可以让应用程序执行原本不可能的操作。

【讨论】:

  • +1:性能影响可能没有您预期的那么高。即几微秒。
  • 我不认为这是 OP 的要求。
  • 我猜这是模棱两可的。如果从元数据生成一个java文件,那么反射就没有用了。
【解决方案3】:
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 
}

【讨论】:

    【解决方案4】:

    如果您想创建更复杂的类,请查看http://codemodel.java.net/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-30
      • 2011-04-01
      • 2020-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      相关资源
      最近更新 更多