java - 如何获取 Java 类引用的初始化值

标签 java reflection initialization default-value

我有一个 Class<?>任意类型的引用。如何获得该类型的初始化值?是否有一些库方法,或者我必须自己动手,例如:

Class<?> klass = ...
Object init = 
    (klass == boolean.class)
  ? false
  : (klass == byte.class)
  ? (byte) 0
  ...
  : (Object) null;

用例是我有一个任意的 java.lang.reflect.Method引用,我想使用任意参数调用它(用于某些测试),它可能不是 null如果参数是基本类型,那么我需要指定该类型的一些值。

最佳答案

要在没有第 3 方库的情况下执行此操作,您可以创建一个长度为 1 的数组并读出它的第一个元素(这两个操作都通过 java.lang.reflect.Array):

Object o = Array.get(Array.newInstance(klass, 1), 0);

从 Java 9 开始,您还可以使用

Object o = MethodHandles.zero(klass).invoke();

关于java - 如何获取 Java 类引用的初始化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52988458/

相关文章:

编译 sling 时出现 java.lang.OutOfMemoryError

java - 当套接字被取消引用时,它们是否被垃圾收集

java - Java中如何获取特定包中的所有Class文件?

go - 如何列出接口(interface)类型中的方法名称?

c++ - std::unordered_map内部的std::array的值初始化

c++ - g++ 与 MS c++ 中未初始化的指针

swift - 以编程方式创建 SKScene 子类,没有大小信息?

java - IntelliJ - 创建新项目时缺少 Java 主类

java - 使用 Netty 进行管道流式传输

c# - 按名称动态获取/设置 C# 对象属性的最简单方法