3

この Class c があり、c が表す型の配列を表す Class オブジェクトを取得したいと考えています。出来ますか?方法が見つからない...

明確化:私が持っている他の場所:

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

OK、これでこのクラスができ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.forName() を使用して、配列型の Class インスタンスを作成することもできます。[L基本型をand ;(数値[は次元の数) で囲む必要があるだけなので、

  • 文字列の一次元配列のクラスString[].class[Ljava.lang.String;
  • 文字列の 2 次元配列のクラスは にString[][].classなります[[Ljava.lang.String;
  • あなたの場合、 data.Person[].class は[Ldata.Person;

これは、あなたがする必要があるのは

  • add型が配列でない場合[L;
  • [タイプがすでに配列の場合は、開始時に別のものを追加します。

したがって、動的cには次のようなものを使用できます

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