java - 如何在 Java 中获取给定类的数组类?

标签 java arrays class reflection

我有一个包含特定类型的 Class 变量,我需要获取一个包含相应数组类的变量。我能想到的最好的是:

Class arrayOfFooClass = java.lang.reflect.Array.newInstance(fooClass, 0).getClass();

有没有办法在不创建新实例的情况下做到这一点?

最佳答案

从 Java 12 开始

Class 提供了一个方法 arrayType() , 它返回其组件类型由给定类描述的数组类型类。请注意 individual JDK仍然可以创建该类³的实例。

Class<?> stringArrayClass = FooBar.arrayType()

Java 12 之前

如果不想创建实例,可以手动创建数组的规范名称并通过名称获取类:

// Replace `String` by your object type.
Class<?> stringArrayClass = Class.forName(
    "[L" + String.class.getCanonicalName() + ";"
);

但是Jakob Jenkov argues in his blog您的解决方案是更好的解决方案,因为它不需要摆弄字符串。

Class<?> stringArrayClass = Array.newInstance(String.class, 0).getClass();

³ 感谢对 Johannes Kuhn 的提示.

关于java - 如何在 Java 中获取给定类的数组类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1679421/

相关文章:

java - 数组列表的数组列表作为关系的表示

Java Arraylist 处理元素

class - ZURB FOUNDATION 5 - COLLAPSE 类有什么作用?

java - P6Spy 不记录 SQL

java - 为什么在这种情况下 Streams API 需要泛型类型的提示?

c - 使用预定义的字符串指针初始化指针数组?

javascript - js。通过提示检查数组是否具有用户指定的值

ios - swift 3 从父 ViewController 调用函数

php - 为什么公私保护如此重要?

java - 替换在 contextConfigLocation 参数中配置的 xml 中的占位符时出现问题