gpt4 book ai didi

java - 自动初始化 JCodeModel 创建的字段

转载 作者:行者123 更新时间:2023-12-02 11:45:22 26 4
gpt4 key购买 nike

我通过 Json 创建一个新的 Java 类,即:

{
"package" : "crud.vaadin",
"className" : "StudentForm",
"extension" : "AbstractForm",
"extensiongeneric" : "Person",
"properties" : {
"Name" : {
"type" : "MTextField"
},
"Email" : {
"type" : "MTextField"
}
},
"model" : "Person"
}

将生成:

package crud.vaadin;

public class StudentForm extends AbstractForm<Person>
{

private MTextField Email;
private MTextField Name;

}

我使用 JCodeModel 来生成 StudentForm,字段生成方法如下所示:

    public void createFields(Map<String, Object> properties, JDefinedClass jc, JCodeModel model) {
for(String key : properties.keySet()){
//getType returns MTextField and key is either Email or Name
String type = getType(prop.get(key));
String name = key;
try {
JType jt = model.parseType(type);
JFieldVar field = jc.field(JMod.PRIVATE, jt, name);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}

但我想在创建源时初始化这些字段。

private MTextField email = new MTextField("Email");

有没有办法通过初始化来扩展 JFieldVar?

最佳答案

您只需使用 .field 调用指定初始化 JExpression,如下所示:

JFieldVar field = jc.field(JMod.PRIVATE, jt, name, JExpr._new(jt).arg(name));

关于java - 自动初始化 JCodeModel 创建的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48249522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com