我有一个包含特定类型的 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/