如何使用普通Java动态生成JavaBean类?

如何使用普通Java动态生成JavaBean类?,java,pojo,Java,Pojo,我浏览了一些使用库从JSON、XML等生成bean类的示例。我想知道的是,是否有一种方法可以使用我给出的参数动态生成Javabean类 例如,如果我给出一个字符串数组作为参数,它现在将表示Pojo类的属性,那么如何生成Pojo 参数:{“field1”、“field2”、“field3”} 生成POJO将是: 公共类TestBean{ 私有字符串字段1; TestBean(){ } 公共字符串getField1(){ 返回字段1; } 公共无效集合字段1(字符串字段1){ 此字段1=字段1;

我浏览了一些使用库从JSON、XML等生成bean类的示例。我想知道的是,是否有一种方法可以使用我给出的参数动态生成Javabean类

例如,如果我给出一个字符串数组作为参数,它现在将表示Pojo类的属性,那么如何生成Pojo

参数:
{“field1”、“field2”、“field3”}

生成POJO将是:

公共类TestBean{
私有字符串字段1;
TestBean(){
}
公共字符串getField1(){
返回字段1;
} 
公共无效集合字段1(字符串字段1){
此字段1=字段1;
}    
}
字段2字段3也应相同


在这里,我假设上面的所有属性都是字符串,并且类名现在是常量。我有什么办法可以做到这一点吗?提前感谢。

在运行时生成实际Java类的问题是,您无法使用标准Java语法访问它,因为编译器不知道它

因此,在实践中,大多数人只是在这种情况下使用地图。我能想到的唯一一种情况是,如果需要生成一个真正的类,那么还有一些其他代码是无法更改的,它们需要一个Java对象,并使用反射或其他方式动态地检查它

如果您不需要它,那么最好使用一个映射,或者一些设计用于模拟JavaBean的实用程序类

apachebeanutils包提供了
DynaBean
接口来实现动态javabean。也就是说,只有从BeanUtils包的其余部分访问时,这些类才会被识别为bean

根据您的需要,有几个子类,例如,
LazyDynaBean

DynaBean myBean = new LazyDynaBean();
myBean.set("myProperty", "myValue");

你可以试试。当你说“动态”时,你是指在运行时吗?或者作为编译时工具?那么,在JavaPoet之后,您还需要Java编译器API。问题是:一旦构建了类,您将如何访问它?因为编译器在编译时不知道它,所以不能使用标准Java。您可以只生成
HashMap
并使用
yourMap.get(fieldName)
访问字段。你甚至可以把它放在另一张这样的地图上。