Creating instance of generic objects
Javonet allows you to create instances of generic objects. To initialize generic class first type with expected generic type should be created. Next to initialize the instance of generic type call the "create()" method on the object.
Important Notice that while initializing NType for generic class there is apostrophe with number of generic arguments provided which let's Javonet recognize which generic class should be initialized. For example for List
To create instance of generic class:
// how to create instance of .NET generic class Dictionary<String,List<String>>
// Todo: activate Javonet
// initialize List <String> type
NType typeList = Javonet.getType("List`1", "String");
// get String type
NType typeString = Javonet.getType("String");
// initialize Dictionary<String,List<String>> type
NType type = Javonet.getType("Dictionary`2", typeString, typeList);
// create instance of generic Dictionary
NObject newDict = type.create();
// create instance of generic List
NObject newList = typeList.create();
// add items to generic list
newList.invoke("Add", "a");
newList.invoke("Add", "b");
// add items to generic Dictionary passing string as key and generic List as value
newDict.invoke("Add", "List1", newList);
newDict.invoke("Add", "List2", newList);
// Retrieve dictionary item by string key
NObject result = newDict.getIndex("List1");
// Display second item from generic List retrieved from dictionary
System.out.println((String) result.getIndex(1)); //displays "b"
Was this article helpful?