这是一个变量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();
请问有什么方法可以做到这一点吗?
最佳答案
HRgiger 的回答有所改进:
@SuppressWarnings("unchecked")
static <T> Class<? extends T[]> getArrayClass(Class<T> clazz) {
return (Class<? extends T[]>) Array.newInstance(clazz, 0).getClass();
}
它们都在调用时实例化一个数组对象。要获取数组类型,请使用
Class<?> childType = ...;
Class<?> arrayType = getArrayClass(childType);
关于java - 关于 java : get `String[].class` from `String.class` , 如果 `String.class` 是 "runtime type"怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13392160/