2

ここで、クラス Name があるとします。

class Name {
  String firstName, lastName;
  // getters and setters, etc.
}

and then Name class's object is declared somewhere in other class :

class Other {
  Name name;
  // getter and setters, etc.
}

今、私が次のようなことをすると:

Other o = new Other();
Field[] fields = o.getClass().getDeclaredFields();

fields[0] --> is 'name' the Object of 'Name' class

しかし、私が言うときfield[0].getClass()

Namejava.lang.reflect.Fieldクラスオブジェクトではなく、クラスオブジェクトを提供します。

「名前」のようなフィールドから元のクラスオブジェクトを取得するにはどうすればよいですか

4

5 に答える 5

3

Field.getTypeメソッドは、この Field オブジェクトによって表されるフィールドの宣言された型を識別する Class オブジェクトを返します。

于 2013-07-26T05:37:02.560 に答える
1

基本的に、特定のインスタンスの値をフィールドに問い合わせる必要があります。

Name name = (Name)fields[0].get(o);

今。このようなブラインド キャストを行うのは非常に危険です。おそらくObject最初に割り当ててから、フィールドの名前を決定し、そこからアクションを実行するためにinstanceof使用するか、使用することになるでしょう...Field#getName

注意: について言及したいと思いますgetTypeが、Evgeniy Dorofeev が私を打ち負かしたので、彼の答えを奪いたくありません。

于 2013-07-26T05:36:29.903 に答える