关于java:从“String.class”中获取“String[].class”,如果“String.class”是“运行时类型”呢?[副本]

这个问题在这里已经有答案了
获取组件类型的数组类

(4个答案)

三年前关闭的

这是一个变量Class&lt&燃气轮机;cls,现在我想得到另一个数组类对象哪个组件类型是cls

例如,如果cls=String.class,我想得到String[].class;如果cls=int.class,我想获得int[].class,我该怎么办

你看,从String[]获取String.class非常容易。class

类&lt&燃气轮机;arrayCls=String[].class;
if(arrayCls.isArray()){
类<?>cls=arrayCls.getComponentType();
}

但我找不到简单的方法来做相反的事情

以下是一种可能的解决方案:

类&lt&燃气轮机;clazz=String.class;
类别&lt&燃气轮机;arrayClass=Array.newInstance(clazz,0.getClass();

请问有没有更好的方法

赫吉格的答案有所改进:

@SuppressWarnings(“未选中”)
静态<T>类别<?扩展T[]>getArrayClass(类别<T>clazz){
return(Class<?扩展T[]>)数组.newInstance(clazz,0).getClass();
}

它们在调用时都实例化了一个数组对象。要获取数组类型,请使用

类&lt&燃气轮机;子类型=。。。;
类别&lt&燃气轮机;arrayType=getArrayClass(childType);

发表评论