Kuzunoha
Kuzunoha

Reputation: 185

Assign a specific enum to Class<Enum> in Java

I have an enum, and I want to convert the class into Class<Enum> without reflection.

For example, the enum is Numbers.java

public enum Numbers {
    ONE, TWO, THREE;
}

The best I can do is using reflection, as follow

Class<Enum> enumClass = (Class<Enum>) Class.forName("com.package.inner.eveninner.Numbers");

Is there any way to do it without using reflection?


Class<Enum> enumClass = (Class<Enum>) Numbers.class;

gives an compile error:

incompatible types: Class<Numbers> cannot be converted into Class<Enum>

Upvotes: 0

Views: 56

Answers (1)

OldCurmudgeon
OldCurmudgeon

Reputation: 65813

Try Class<? extends Enum<?>> instead.

public enum Numbers {
    ONE, TWO, THREE;
}
public void test(String[] args) throws Exception {
    Class<? extends Enum<?>> enumClass = Numbers.class;
    System.out.println(enumClass);
}

Upvotes: 2

Related Questions