如何获取Java类引用的初始化值
作者:互联网
我有一个Class<?>任意类型的引用.如何获得该类型的初始化值?是否有一些库方法或我必须自己滚动,如:
Class<?> klass = ...
Object init =
(klass == boolean.class)
? false
: (klass == byte.class)
? (byte) 0
...
: (Object) null;
用例是我有一个任意的java.lang.reflect.Method引用,我想用任意参数调用(对于某些测试),如果参数是基本类型,它可能不为null,所以我需要指定这种类型的一些价值.
解决方法:
要在没有第三方库的情况下执行此操作,您可以创建一个长度为1的数组并读出其第一个元素(两个操作都通过java.lang.reflect.Array):
Object o = Array.get(Array.newInstance(klass, 1), 0);
从Java 9开始,您也可以使用
Object o = MethodHandles.zero(klass).invoke();
标签:java,reflection,initialization,default-value 来源: https://codeday.me/bug/20191006/1860162.html