3

所以我有这个类 c,我想获取表示 c 表示的类型数组的 Class 对象。可能吗?我找不到任何方法...

澄清:我在其他地方:

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

好的,所以我c现在有这门课。我想拥有Class代表人的数组。就像我做的一样:

Class<?> cs = data.Person[].class;

但我想通过反思来做到这一点。我对原始类一无所知,但c对它的引用。

4

2 回答 2

6

我想你想要Array.newInstance(c, 0).getClass()

于 2013-10-27T12:22:48.777 回答
2

要创建某些数组类型的 Class 实例,您还可以使用 Class.forName()。您只需要用[Land包围基本类型;(数字[是维度数),所以

  • 一维字符串数组的类String[].class将是[Ljava.lang.String;
  • 二维字符串数组的类String[][].class将是[[Ljava.lang.String;.
  • 在你的情况下 data.Person[].class 将是[Ldata.Person;

这意味着您需要做的就是

  • 添加[L并且;如果类型不是数组,
  • [如果类型已经是数组,则在开始时添加另一个。

所以对于动态c你可以使用类似的东西

Class.forName(c.isArray()?"["+c.getName():"[L"+c.getName()+";")
于 2013-10-27T12:37:53.393 回答