クラス「T」から派生した匿名クラスのフィールドを作成するクラス「S」があります。
class T {
public void foo() {}
}
class S {
T t1 = new T() {};
T t2 = new T() {};
}
「foo」を呼び出すには、other の S インスタンスのすべての T フィールドを反復処理する必要があります。問題は、これが匿名クラスであるため、Field.get(...) に渡すインスタンスを作成できないことです。T インスタンスを渡すと、IllegalArgumentException が発生します...
それを機能させるチャンスはありますか?
編集
OK、Field.get() に S を渡す必要があることを理解しました。ただし、私は単純化しすぎており、状況はもう少し複雑です。S は実際には無名クラスです。
class SM {
class S {
void bar() {...}
class T {
public void foo() {}
}
}
}
....
SM sm = new SM() {
S s = new S() {
T t1 = new T() {};
T t2 = new T() {};
}
}
S.bar() のすべての T フィールドにアクセスする必要があります。ありがとう!
もう一度編集
pff もちろん、「これ」を Field.get() に渡す必要があります。ありがとうございます。