【发布时间】:2013-02-02 21:19:27
【问题描述】:
我有一个类“S”,我在其中创建了一个从类“T”派生的匿名类的字段:
class T {
public void foo() {}
}
class S {
T t1 = new T() {};
T t2 = new T() {};
}
我需要遍历另一个 S 实例的所有 T 字段来调用“foo”。 问题是我不能创建一个实例来传递给 Field.get(...) 因为这是一个匿名类。如果我传递一个 T 实例,我会得到一个 IllegalArgumentException...
有没有机会让它发挥作用?
编辑
好的,我现在明白我应该将 S 传递给 Field.get()。但是我过于简单化了,情况有点复杂。 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 当然,我需要将“this”传递给 Field.get()。谢谢大家,对不起,我感觉很笨。
【问题讨论】:
-
你能在编辑后更新你的代码吗?匿名类中的字段 s 是什么意思 - 在当前定义中,人们如何访问它?
-
那么,这是否意味着您的问题已经得到解答?
-
是的!要回答您的问题,实际上在我的使用中不需要从外部访问这些字段。更多上下文:我实现了一个状态机:SM 是 StateMachine,S 是 State,T 是 Transition...
标签: java reflection field anonymous