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



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

Class getClassArrayType(String strClassName)
{
//some code
return class;
}

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

我该怎么做?

我读过关于反射的文章,但它让我很困惑!

我不知道这是不是最优的,但我是这样做的:

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

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

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

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

可以是

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();
    }
}

相关内容

  • 没有找到相关文章

最新更新