I have a method with the following signature:
// Converts a json string to a list of objects
// Assumption: json is an array, and all items in the list are o
Due to type erasure, you definitely can't "infer" what T
is--it doesn't even exist at runtime. The closest you could come is inspect the values in defValue
(if it has values) and get the class of the elements there.
Class> tType = defValue.get(0).getClass();
if (Boolean.class.isAssignableFrom(tType)) { //...
With regards to your thinking of using reflection like getTypeArguments()
, etc. Those only provide data for declared types, never actual types. So for example, if you got a handle to the Method
object and called getTypeParameters()
, you'd just get an array containing a type object representing T
--not the actual type that T
represents at some specific runtime invocation.