How can I create following:
HashMap<String, Pair<Boolean, Object>> mHashMap = new HashMap();
I have following:
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()
);
How can I now combine the subType
with the mainType
to get the correct mainType
?
I need something like following:
ParameterizedTypeName mainType = ParameterizedTypeName.get(HashMap.class, String.class, subType);
Something like this should work:
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();
The code above should generate:
private final HashMap<String, Pair<Boolean, Object>> mHashMap = new HashMap<>();
Hope that helps.