关于Java:从`String.class`获取`String[].class`,如果`String.class`是一个"运行时类型",那会怎么样?

21 浏览
0 Comments

关于Java:从`String.class`获取`String[].class`,如果`String.class`是一个"运行时类型",那会怎么样?

这里有一个变量Class cls,现在我想要获得另一个Array Class Object,其中组件类型是cls。例如,如果cls=String.class,我想要获得String[].class;如果cls=int.class,我想要获得int[].class,我该怎么办呢?

你看,从String[].class获得String.class非常容易:

Class arrayCls = String[].class;
if(arrayCls.isArray()){
    Class cls = arrayCls.getComponentType();
}

但我找不到简单的方法来做反向操作。

这是一个可能的解决方案:

Class clazz = String.class;
Class arrayClass = Array.newInstance(clazz,0).getClass();

是否有更好的方法来实现这个请?

0