在JCodeModel中实例化字段级HashMap

在JCodeModel中实例化字段级HashMap,jcodemodel,Jcodemodel,我想在JCodeModel中一次性声明并实例化一个HashMap 我有: jc.field(JMod.PRIVATE, HashMap.class, "initAttributes"); 它声明了它,但没有实例化它。如何实例化它 感谢在最简单的情况下,您可以直接将初始化附加到字段的创建中: jc.field(JMod.PRIVATE, HashMap.class, "initAttributes") .init(JExpr._new(codeModel.ref(HashMap.clas

我想在JCodeModel中一次性声明并实例化一个HashMap

我有:

jc.field(JMod.PRIVATE, HashMap.class, "initAttributes");
它声明了它,但没有实例化它。如何实例化它


感谢

在最简单的情况下,您可以直接将初始化附加到字段的创建中:

jc.field(JMod.PRIVATE, HashMap.class, "initAttributes")
    .init(JExpr._new(codeModel.ref(HashMap.class)));
还有一些提示:

  • 考虑到您通常应该这样做,最好使用“尽可能基本”的类型来声明变量。您几乎不应该将变量声明为

    private HashMap map;
    
    但基本上总是这样

    private Map map;
    
    因为
    Map
    是与此相关的接口

  • 您还可以在JCodeModel中添加泛型。这些通常涉及对某些类型的
    shown
    的一些调用。这需要花费更多的精力,但它将生成可以编译的代码,而不会由于原始类型而导致警告

这里显示了一个示例。(它使用
String
作为键类型,使用
Integer
作为映射的值类型。您可以相应地进行调整)

生成的类如下所示:

package com.example;

import java.util.HashMap;
import java.util.Map;

public class Example {

    private Map<String, Integer> initAttributes = new HashMap<String, Integer>();

}
package.com.example;
导入java.util.HashMap;
导入java.util.Map;
公开课范例{
私有映射initAttributes=newhashmap();
}

在最简单的情况下,您可以直接将初始化附加到字段的创建中:

jc.field(JMod.PRIVATE, HashMap.class, "initAttributes")
    .init(JExpr._new(codeModel.ref(HashMap.class)));
还有一些提示:

  • 考虑到您通常应该这样做,最好使用“尽可能基本”的类型来声明变量。您几乎不应该将变量声明为

    private HashMap map;
    
    但基本上总是这样

    private Map map;
    
    因为
    Map
    是与此相关的接口

  • 您还可以在JCodeModel中添加泛型。这些通常涉及对某些类型的
    shown
    的一些调用。这需要花费更多的精力,但它将生成可以编译的代码,而不会由于原始类型而导致警告

这里显示了一个示例。(它使用
String
作为键类型,使用
Integer
作为映射的值类型。您可以相应地进行调整)

生成的类如下所示:

package com.example;

import java.util.HashMap;
import java.util.Map;

public class Example {

    private Map<String, Integer> initAttributes = new HashMap<String, Integer>();

}
package.com.example;
导入java.util.HashMap;
导入java.util.Map;
公开课范例{
私有映射initAttributes=newhashmap();
}