>
1. Getting started
- 1.1. Installing Javonet
- 1.2. Activating Javonet
- 1.3. Adding References to .NET Libraries
- 1.4. XML Configuration File
- 1.5. Using the Javonet Fluent Interface
- 1.7. Introduction to Using .NET Back-end and UI Components in Java
2. Calling methods
- 2.1. Invoking Static Methods
- 2.2. Creating Instance and Calling Instance Methods
- 2.3. Calling Generic Methods
3. Working with .NET Objects
- 3.1. Creating Instance Of Generic Object
- 3.2. Extending the .NET Class in Java and Wrapping .NET Methods
4. Fields and Properties
- 4.1. Get/Set Values for Static Fields and Properties
- 4.2. Get/Set Values for Instance Fields and Properties
5. Methods Arguments
- 5.1. Passing Reference-Type Arguments
- 5.2. Passing Arguments by Reference with “ref” and “out” Keywords
- 5.3. Passing typeof(Type) as Method Argument
- 5.4. Calling Overloaded Method Passing Null Argument
6. Nested Types
7. Enums
8. Arrays and Collections
- 8.1. Arrays: Using Value-Type and Reference-Type Arrays
- 8.2. Working with .NET arrays and collections from Java with Javonet
9. Embeding UI controls
10. Referencing libraries
11. Off-line activation
12. Events and Delegates
13. Disposing and Garabage Collection
14. .NET Configuration Files (AppConfig, WebConfig)
15. Exceptions, Debugging and Testing
- 15.. Handling Activation Issues
- 15.1. Handling .NET Exceptions
- 15.2. How to debug .NET code called from Java
- 15.3. Debugging Javonet Enabled Application
16. Strongly-Typed Wrappers
17. Advanced Activation and Licensing
- 17.1. Runtime vs. Offline vs. Compile Time Activation
- 17.2. Project Activation Tool
- 17.6. Delegating Activation Server
18 Other usage scenarios
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");
- Create an instance of our GenericSample class.
- Using the generic method, initialize the generic method invocation by passing one or many generic types of arguments.
- 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).