Using enum type

You are browsing legacy Javonet 1.5 (Java<>.NET bridge for Windows) documentation. Use the left side menu or click here to switch to latest Javonet 2.0 documentation. Javonet 2.0 allows you to use any module from JVM, CLR, Netcore, Python, Ruby, Perl, NodeJS on Windows, Linux and MacOs from any application created in Java, Clojure, Groovy, Kotlin, C#, F#, J#, VB.NET, Python, Perl, Ruby, JavaScript, TypeScript, C++ and GoLang

To use .NET enums in your Java project, javonet API provides special NEnum type. Using this class you can keep the reference of particular enum value, get/set the enum value, pass the enum value as method argument or compare enum values.
To initialize reference to .NET enum type you can use the NEnum(String enumTypeName, String enumValue) constructor. As first argument you must provide enum type name with or without namespace. When namespace is not provided Javonet will automatically lookup the enum type in all loaded assemblies, if there is only one type with provided name it will be used. In second argument selected enum value should be provided.

Assuming we have a custom JAR library with the following enum inside:

This snippet doesn't support selected combination of technologies.

Enum usage:

I code in:

This snippet doesn't support selected combination of technologies.

How to pass enum as method argument:

Assuming we have a custom JAR library with the following class inside:

public class TestClass {
    public TestClass() {
    }

    public static int MyStaticField;

    public int MyInstanceField;

    public static String SayHello(String name) {
        return "Hello " + name;
    }

    public static int MethodExpectingPrimitiveInt(int arg) {
        return arg * 2;
    }

    public static int MethodExpectingClassInteger(Integer arg) {
        return arg * 2;
    }

    public int MultiplyByTwo(Integer arg) {
        return arg * 2;
    }

    public <T> T MyGenericMethod(T arg1)
    {
        return arg1;
    }
}

To use enum as method argument:

I code in:

This snippet doesn't support selected combination of technologies.

See Live Example!