Calling Generic Methods

Calling Generic Methods

With javOnet you can very easily invoke any generic instance or static method. To call a generic method, you need to provide types that will be used during the method invocation. Those types can be passed as an instance of NType objects initialized with particular .NET types. Let’s assume you have following .NET object you want to use from Java:

class GenericSample 
{
    public void MyGenericMethod<T>(T arg1) 
    {
          return;
    }
    public K MyGenericMethodWithTwoTypes<T,K>(T arg1) 
    {
          //Some operation
          return null;
    }
}
// Sample .NET usage
GenericSample genSample = new GenericSample();
genSample.MyGenericMethod<String>("sample");
genSample.MyGenericMethodWithTwoTypes<String,Int32>("sample");

If you want to call MyGenericMethod with type String, you need to use following piece of Java code in javOnet:

// (..) initialize javonet + load your .NET dll
//Create new instance of GenericSample class
NObject genSample = Javonet.New("GenericSample"); 
//Invoke generic method with one type
genSample.generic(Javonet.getType("String")).invoke("MyGenericMethod","sample");

//Invoke generic method with two types
genSample.generic(Javonet.getType("String"),Javonet.getType("Int32"))
    .invoke("MyGenericMethodWithTwoTypes","sample");
  1. Create an instance of our GenericSample class.
  2. Using the generic method, initialize the generic method invocation by passing one or many generic types of arguments.
  3. Invoke your method with a sample argument.

Javonet.getType(typeName) returns an instance of NType object attached to a specific .NET type. The instruction NType myType = Javonet.getType(“String”) is the Java equivalent of the .NET Type myType = typeof(String).

See Live Example!