lundi 2 mars 2020

Get Return Type of Method that Returns ArrayList<> via Reflection

I need to be able to retrieve the class/type of Object present in ArrayList<TYPE> returned by Method method via reflection.

When calling:

Class<?> methodReturnType = method.getReturnType();
System.out.println("Method return type: " + methodReturnType);

on a method that returns ArrayList<String> I get:

class java.util.ArrayList

which does not include information on the generic type: String.

I believe this question may have been addressed here and here however I do see that if I call:

Type genericReturnType = method.getGenericReturnType();
System.out.println("Generic return type (name): " + genericReturnType.getTypeName());

This prints:

java.util.ArrayList<java.lang.String>

Which suggests that it is possible to know that the ArrayList<> holds Object of type String.

Obviously, I might be able to extract String from text: <java.lang.String> via regex but this is not ideal.

What am I missing? Is it possible to obtain the type of ArrayList<> of a method that returns ArrayList<TYPE> at run-time via reflection? If not, how does genericReturnType.getTypeName() print the right type (String)?





Aucun commentaire:

Enregistrer un commentaire