如何创建以下内容:

HashMap<String, Pair<Boolean, Object>> mHashMap = new HashMap();


我有以下内容:

ParameterizedTypeName subType = ParameterizedTypeName.get(Pair.class, Boolean.class, Object.class);
ParameterizedTypeName mainType = ParameterizedTypeName.get(HashMap.class, String.class, Pair.class);
 builder.addField(
            FieldSpec.builder(mainType, "mHashMap", Modifier.PRIVATE, Modifier.FINAL)
                    .initializer("new HashMap<>()")
                    .build()
    );


现在如何将subTypemainType组合以获得正确的mainType

我需要以下内容:

ParameterizedTypeName mainType = ParameterizedTypeName.get(HashMap.class, String.class, subType);

最佳答案

这样的事情应该起作用:

ParameterizedTypeName subType = ParameterizedTypeName.get(Pair.class,
                                                          Boolean.class,
                                                          Object.class);
ClassName string = ClassName.get("java.lang",
                                 "String");
ClassName hashMap = ClassName.get("java.util",
                                  "HashMap");
ParameterizedTypeName mainType = ParameterizedTypeName.get(hashMap,
                                                           string,
                                                           subType);

FieldSpec.builder(mainType,
                  "mHashMap",
                  Modifier.PRIVATE,
                  Modifier.FINAL)
         .initializer("new HashMap<>()")
         .build();


上面的代码应生成:

private final HashMap<String, Pair<Boolean, Object>> mHashMap = new HashMap<>();


希望能有所帮助。

10-06 07:20