我有一个Class
保存某种类型的变量,我需要获取一个保存相应数组类的变量。我能想到的最好的办法是:
Class arrayOfFooClass = java.lang.reflect.Array.newInstance(fooClass, 0).getClass();
有没有办法在不创建新实例的情况下执行此操作?
从 Java 12 开始
Class
提供了一个方法arrayType(),它返回数组类型类,其组件类型由给定的 Class 描述。请注意,个人JDK仍然可以创建该类的实例。
Class<?> stringArrayClass = FooBar.arrayType()
Java 12 之前
如果您不想创建实例,可以手动创建数组的规范名称并按名称获取类:
// Replace `String` by your object type.
Class<?> stringArrayClass = Class.forName(
"[L" + String.class.getCanonicalName() + ";"
);
But 雅各布·詹科夫(Jakob Jenkov)在他的博客中争论道您的解决方案是更好的解决方案,因为它不需要摆弄字符串。
Class<?> stringArrayClass = Array.newInstance(String.class, 0).getClass();
³ 感谢您的提示约翰内斯·库恩.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)