抓住Foo []。给出Foo.class类

时间:2012-03-28 13:25:38

标签: java arrays reflection

我有一个c类型的对象Class(我在运行时得到了对象,所以我无法在编译时告诉它代表哪个类。)

假设c代表班级Foo。我现在想要掌握Class - 代表Foo[]的实例。

使用标准Java API如何做到最好?

3 个答案:

答案 0 :(得分:3)

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

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

这看起来像是作弊,但它比使用名称类更清晰。

答案 1 :(得分:1)

以下是如何执行此操作的示例:

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 {
    }
}

答案 2 :(得分:0)

从我在测试中看到的情况来看,这应该有效:

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