How to get the initialisation value for a Java Class reference

  • A+
Category:Languages

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.

 


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(); 

Comment

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: