2

私はJavaリフレクションについて多くのことを知りませんが、Javaのクラスフィールドを単純な文字列以外で参照する方法はありますか(またはそうでない場合)

myClass.class.getField ("myField")

代わりに、コンパイラによってチェックできる次のようなことを行います。

myClass.class.getField (myField.field) 

または私は多分知らない

myClass.class.getField (myClass.myField.field)

したがって、私の目標は、クラスを参照でき、コンパイラがその存在を確認できるように、フィールド(プライベートまたは何でも)を参照して、コンパイラがその存在を確認できるようにすることです。

4

4 に答える 4

2

いいえ、Java 内でこれを許可するものは何もありません。はい、それは素晴らしいことですが、現時点では存在しません。

私たちが持っている最も近いものは、一般的なラムダ式機能での Java 8 のメソッド リテラルの約束ですが、私が知る限り、これはフィールドには適用されません。

于 2013-06-17T14:41:38.937 に答える
1

あなたはほとんどそれを行うことができます:

Field field = myClass.class.getField (someField.getName());
于 2013-06-17T14:43:43.687 に答える
0

getFieldのメソッドはClass String を想定しているため、フィールドの String 名を指定する必要があります。

できることは、最初getFields()にクラスのメソッドを呼び出し、それらのフィールドから呼び出しを行うことです。それを達成するための手順は次のとおりです。

  1. 配列Class.getFields()を返す呼び出しを行います。Field
  2. これで、クラスに確実に存在するフィールドのリストができたので、呼び出しを行うことができますgetField(field.getName())
于 2013-06-17T14:42:12.080 に答える