关于Java:从`String.class`,得到`的String [] class`什么,如果`String.class`是"运行时类型"? [英] about java: get `String[].class` from `String.class`, what if `String.class` is a "runtime type"?

查看:177
本文介绍了关于Java:从`String.class`,得到`的String [] class`什么,如果`String.class`是"运行时类型"?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是一个变量类<> 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆