Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取给定类的数组类的Java反射_Java_Arrays_Reflection - Fatal编程技术网

获取给定类的数组类的Java反射

获取给定类的数组类的Java反射,java,arrays,reflection,Java,Arrays,Reflection,所以我有一个c类,我想得到一个Class对象,它代表一个c类型的数组。可能吗?我找不到任何方法 澄清:在其他地方我有: Class<?> c = Class.forName("data.Person"); 但我想用反思来做。我对原始类一无所知,但对它的引用是c。我认为您需要Array.newInstance(c,0).getClass()要创建某种数组类型的类实例,还可以使用class.forName()。您只需要用[L和;围绕基本类型(编号[是尺寸编号),因此 一维字符串数组的

所以我有一个c类,我想得到一个Class对象,它代表一个c类型的数组。可能吗?我找不到任何方法

澄清:在其他地方我有:

Class<?> c = Class.forName("data.Person");

但我想用反思来做。我对原始类一无所知,但对它的引用是
c

我认为您需要
Array.newInstance(c,0).getClass()
要创建某种数组类型的类实例,还可以使用class.forName()。您只需要用
[L
围绕基本类型(编号
[
是尺寸编号),因此

  • 一维字符串数组的类
    String[]。类
    将是
    [Ljava.lang.String;
    ,
  • 二维字符串数组的类
    String[][]。
    类将是
    [[Ljava.lang.String;
  • 在您的示例中,data.Person[]类将是
    [Ldata.Person;
这意味着你需要做的就是

  • 如果类型不是数组,则添加
    [L
  • 如果类型已经是数组,则在开始时添加另一个
    [
因此,对于动态
c
可以使用

Class.forName(c.isArray()?"["+c.getName():"[L"+c.getName()+";")

谢谢,这很有效!
Class.forName(c.isArray()?"["+c.getName():"[L"+c.getName()+";")