编程语言
首页 > 编程语言> > 如何获取Java类引用的初始化值

如何获取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