Dee*_*rda 15 java arrays reflection class
我有一个Class包含某种类型的变量,我需要获取一个包含相应数组类的变量.我能想到的最好的是:
Class arrayOfFooClass = java.lang.reflect.Array.newInstance(fooClass, 0).getClass();
Run Code Online (Sandbox Code Playgroud)
有没有办法在不创建新实例的情况下执行此操作?
Chr*_*fer 16
如果您不想创建实例,可以手动创建数组的规范名称并按名称获取类:
// Replace `String` by your object type.
Class stringArrayClass = Class.forName(
"[L" + String.class.getCanonicalName() + ";"
);
Run Code Online (Sandbox Code Playgroud)
但Jakob Jenkov在他的博客中指出,你的解决方案更好,因为它不需要摆弄字符串.
Class stringArrayClass = Array.newInstance(String.class, 0).getClass();
Run Code Online (Sandbox Code Playgroud)
Joh*_*uhn 12
从 Java 12 开始,就有了arrayType()java.lang.Class 上的方法。接着就,随即:
Class<?> arrayOfFooClass = fooClass.arrayType();
Run Code Online (Sandbox Code Playgroud)