关于Java:从`String.class`,得到`的String [] class`什么,如果`String.class`是"运行时类型"? [英] about java: get `String[].class` from `String.class`, what if `String.class` is a "runtime type"?
问题描述
下面是一个变量类<> CLS
,现在我想再弄 Array类对象
的组件类型是 CLS
。
Here is a variable Class<?> cls
, now I want to get another Array Class Object
which component type is cls
.
例如,如果 CLS
= 为String.class
,我想获得字符串[]的.class
;如果 CLS
= int.class
,我想获得 INT []。类
,我该怎么办?
For example, if cls
=String.class
, I want to get String[].class
; if cls
=int.class
, I want to get int[].class
, what should I do?
您看,这是很容易得到为String.class
从的String []类
:
You see, It's quite easy to get String.class
from String[].class
:
Class<?> arrayCls=String[].class;
if(arrayCls.isArray()){
Class<?> cls=arrayCls.getComponentType();
}
但我不能找到简单的方法做反向。
But I cannot find easy way to do the reverse.
下面是一个可能的解决方案:
Here is one possible solution:
Class<?> clazz=String.class;
Class<?> arrayClass=Array.newInstance(clazz,0).getClass();
有没有连击方式做到这一点吗?
Is there any batter way to do this please?
推荐答案
也许尝试的Class.forName(字符串)
?
编辑:这是一个code段
Here is a code snippet.
Class<?> arrayClass = String[].class;
System.out.println(arrayClass);
Class<?> namedClass = Class.forName("[L" + String.class.getName() + ";");
System.out.println(namedClass);
System.out.println(arrayClass == namedClass);
这篇关于关于Java:从`String.class`,得到`的String [] class`什么,如果`String.class`是&QUOT;运行时类型&QUOT;?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!