使用Java反射获取类的数组类型

时间:2014-05-19 12:03:47

标签: java android reflection

在我的android项目中,我想编写一个函数,该函数应该返回类的数组类型

Class getClassArrayType(String strClassName)
{

//some code

return class;
}

如果我将“任务”作为类名传递给上面的函数,它应该返回Task[].class

我该怎么做?

我已经阅读了有关反思但却让我很困惑的事情!

请帮助我。

3 个答案:

答案 0 :(得分:2)

我不知道它是否是最佳的,但我是按照以下方式进行的:

Array.newInstance(Class.forName("strClassName"), 0).getClass()

此外, strClassName 必须是所需类的完全限定名称。

答案 1 :(得分:1)

不确定这是最好的方法,但它起作用,至少对于非数组类型

String className = "java.lang.String";
String arrayClassName = "[L" + className + ";";
Class<?> arrayClass = Class.forName(arrayClassName);

答案 2 :(得分:0)

一个选项可能是

public class Test {
    public static void main(String[] args) throws ClassNotFoundException {
        System.out.println(getClassArrayType(Test.class.getName()));
    }

    static Class getClassArrayType(String strClassName)
            throws ClassNotFoundException {
        Class cls = Class.forName(strClassName);

        Object[] arr = (Object[]) Array.newInstance(cls, 10);
        return arr.getClass();
    }

}