获取Foo[].class给定的Foo.class



我有一个类型为Class的对象c(我在运行时掌握了该对象,所以在编译时无法判断它代表的是哪个类。)

假设c表示类别Foo。我现在想要获得一个代表Foo[]Class实例。

如何最好地使用标准Java API?

根据http://tutorials.jenkov.com/java-reflection/arrays.html,其中一种方法是:

Class arrayClass = java.lang.reflect.Array.newInstance(c, 0).getClass();

这看起来像是一个骗局,但它绝对比玩类名称更干净。

以下是如何做到这一点的示例:

import java.lang.reflect.Array;
public class ReflectTest {
    public static void main(String[] args) {
        Foo c = new ReflectTest().new Foo();
        Foo[] foos = (Foo[]) Array.newInstance(c.getClass(), 5);
    }
    class Foo {
    }
}

从我的测试中可以看出,这应该是可行的:

Class c = ...
Class cArr = java.lang.reflect.Array.newInstance(c, 1).getClass();

相关内容

最新更新