首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动初始化由JCodeModel创建的字段

自动初始化由JCodeModel创建的字段
EN

Stack Overflow用户
提问于 2018-01-14 12:21:39
回答 1查看 140关注 0票数 0

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

代码语言:javascript
复制
{
    "package" : "crud.vaadin",
    "className" : "StudentForm",
    "extension" : "AbstractForm",
    "extensiongeneric" : "Person",
    "properties" : {
        "Name" : {
            "type" : "MTextField"
        },
        "Email" : {
            "type" : "MTextField"
        }
    },
    "model" : "Person"
}

将产生:

代码语言:javascript
复制
package crud.vaadin;

public class StudentForm extends AbstractForm<Person>
    {

        private MTextField Email;
        private MTextField Name;

    }

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

代码语言:javascript
复制
    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();
                }
            }
        }

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

代码语言:javascript
复制
private MTextField email = new MTextField("Email");

是否有方法通过初始化扩展JFieldVar?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-28 22:33:11

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

代码语言:javascript
复制
JFieldVar field = jc.field(JMod.PRIVATE, jt, name, JExpr._new(jt).arg(name));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48249522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档