How to cast java.lang.reflect.Type to enum?

Milen Igrachev

I have fairly simple problem.
I have a variable of type java.lang.reflect.Type and I want to do two different things to it in case its holds class or enumeration. I can fairly simple check if the varaible is enum by simply asking .isEnum(). However to call the specific enumeration methods I need to cast this variable to be enumeration. Here is some code for illustration. I know it does not make much of a sence, but its just for the cast illustration:

public class TestClass {
    public static String text = "MySampleTextClass.";
}
public enum TestEnum {
    MySampleText
}
public class Tester {
    public static Object retrieveValue (java.lang.reflect.Type myVar, String enumStringValue) {
        String enumStringValue = "MySampleText";

        // the variable is enum!!!
        if (myVar.isEnum()) {
            return (Enum myVar).valueOf(enumStringValue);
        }
        // the variable is class!!!
        else {
            return myVar.getClass().getSimpleName();
        }
    }
}

I tried casts like

(java.lang.Enum myVar).valueOf(enumString);

or

(java.lang.Enum<?> myVar).valueOf(enumString); 

but I can't make it work.

Any ideas?

Seelenvirtuose

Use the static method valueOf that is declared in the abstract class Enum:

Class clazz = (Class) myVar;
if (clazz.isEnum()) {
    return Enum.valueOf(clazz, enumStringValue);
}

But ... a cast to Class is necessary as java.lang.reflect.Type is just a marker interface. Additionally, you must cast to the raw type Class to make it work. There are many runtime traps you can get into.

Overall, it's very uncummon to have such a requirement. Why do you have to use reflection for retrieving an enum value for which you even do not know the type?

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How to cast java.lang.reflect.Type to enum?

From Dev

How to obtain java.lang.reflect.Type from a Scala type?

From Dev

How to obtain java.lang.reflect.Type from a Scala type?

From Dev

Caused by: java.lang.ClassCastException: libcore.reflect.ParameterizedTypeImpl cannot be cast to java.lang.Class when use Generic Type

From Dev

Check instance with java.lang.reflect.Type

From Dev

Scala TypeTag to java.lang.reflect.Type

From Dev

Scala TypeTag to java.lang.reflect.Type

From Dev

Cast java.lang.reflect.Method to a functional interface

From Dev

Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

From Dev

java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

From Dev

Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

From Dev

How to assign assign type in a generic class with a param java.lang.reflect.Type

From Dev

How do I pass generic type for java.lang.reflect.Array.newInstance?

From Dev

java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to java.lang.Class

From Dev

java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to java.lang.Class

From Dev

Convert java.lang.reflect.Type to Class<T> clazz

From Dev

Simple code to get java.lang.reflect.Type

From Dev

Convert java.lang.reflect.Type to Class<T> clazz

From Dev

How to fix this exception java.lang.String cannot be cast to user defined type

From Dev

How to find location of semantically malformed parameterized type in code. JBoss Weld throws java.lang.reflect.MalformedParameterizedTypeException

From Dev

How to find location of semantically malformed parameterized type in code. JBoss Weld throws java.lang.reflect.MalformedParameterizedTypeException

From Dev

How to fix/workaround java.lang.reflect.InvocationTargetException

From Dev

how to resolve the java.lang.reflect.InvocationTargetException in maven

From Dev

How to swap controllers in JavaFX? java.lang.reflect.InvocationTargetException

From Dev

Swift integer type cast to enum

From Dev

How to Cast Enum To Int

From Dev

java x.xml.ws.soap.SOAPFaultException: java.lang.String cannot be cast to java.lang.Enum

From Dev

How one can cast ref to enum value as u16 (base enum type) in Rust?

From Dev

java.lang.Integer cannot be cast to java.lang.Byte error with Any type in Scala

Related Related

  1. 1

    How to cast java.lang.reflect.Type to enum?

  2. 2

    How to obtain java.lang.reflect.Type from a Scala type?

  3. 3

    How to obtain java.lang.reflect.Type from a Scala type?

  4. 4

    Caused by: java.lang.ClassCastException: libcore.reflect.ParameterizedTypeImpl cannot be cast to java.lang.Class when use Generic Type

  5. 5

    Check instance with java.lang.reflect.Type

  6. 6

    Scala TypeTag to java.lang.reflect.Type

  7. 7

    Scala TypeTag to java.lang.reflect.Type

  8. 8

    Cast java.lang.reflect.Method to a functional interface

  9. 9

    Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

  10. 10

    java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

  11. 11

    Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

  12. 12

    How to assign assign type in a generic class with a param java.lang.reflect.Type

  13. 13

    How do I pass generic type for java.lang.reflect.Array.newInstance?

  14. 14

    java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to java.lang.Class

  15. 15

    java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to java.lang.Class

  16. 16

    Convert java.lang.reflect.Type to Class<T> clazz

  17. 17

    Simple code to get java.lang.reflect.Type

  18. 18

    Convert java.lang.reflect.Type to Class<T> clazz

  19. 19

    How to fix this exception java.lang.String cannot be cast to user defined type

  20. 20

    How to find location of semantically malformed parameterized type in code. JBoss Weld throws java.lang.reflect.MalformedParameterizedTypeException

  21. 21

    How to find location of semantically malformed parameterized type in code. JBoss Weld throws java.lang.reflect.MalformedParameterizedTypeException

  22. 22

    How to fix/workaround java.lang.reflect.InvocationTargetException

  23. 23

    how to resolve the java.lang.reflect.InvocationTargetException in maven

  24. 24

    How to swap controllers in JavaFX? java.lang.reflect.InvocationTargetException

  25. 25

    Swift integer type cast to enum

  26. 26

    How to Cast Enum To Int

  27. 27

    java x.xml.ws.soap.SOAPFaultException: java.lang.String cannot be cast to java.lang.Enum

  28. 28

    How one can cast ref to enum value as u16 (base enum type) in Rust?

  29. 29

    java.lang.Integer cannot be cast to java.lang.Byte error with Any type in Scala

HotTag

Archive