Lukas Eder :
I have a Class<?>
reference for an arbitrary type. How to get that type's initialisation value? Is there some library method for this or do I have to roll my own, such as:
Class<?> klass = ...
Object init =
(klass == boolean.class)
? false
: (klass == byte.class)
? (byte) 0
...
: (Object) null;
The use case is I have an arbitrary java.lang.reflect.Method
reference, which I want to call using arbitrary parameters (for some testing), which may not be null
in case the parameter is a primitive type, so I need to specify some value of that type.
Holger :
To do it without 3rd party libraries, you may create an array of length one and read out its first element (both operations via java.lang.reflect.Array
):
Object o = Array.get(Array.newInstance(klass, 1), 0);
Starting with Java 9, you could also use
Object o = MethodHandles.zero(klass).invoke();