gpt4 book ai didi

java - 关于 java : get `String[].class` from `String.class` , 如果 `String.class` 是 "runtime type"怎么办?

转载 作者:IT老高 更新时间:2023-10-28 21:06:26 25 4
gpt4 key购买 nike

这是一个变量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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com