内部类是Adapter,inner-inner类是Listener。如何从 Listener 访问(模糊的)适配器成员/方法?
list.setAdapter(new Adapter() {
public View getView() {
// ...
button.setListener(new Listener() {
public void onClick() {
Adapter.this.remove(item);
}
);
}
});
通常要访问外部类成员,您只需说 Outer.this.member,但在这种情况下它给了我以下错误(使用实际类):
error: not an enclosing class: ArrayAdapter
那么你应该如何从内部内部类访问内部类成员呢?我不喜欢多层嵌套的匿名类,但在这种情况下,我正在学习一个新的 API,但不确定是否有更简洁的方法。我已经有一个解决方法,但无论如何都想知道。 remove() 并没有真正被 inner-inner 类遮盖,因此在这种情况下实际上不需要指定类,但希望在代码中明确说明此 remove() 方法的确切位置。我也想知道它是否被遮盖了。我相信使用 Outer.$6.remove()
会起作用,但我也不认为它应该是那样的。
最佳答案
将 this
赋给一个变量,然后访问最里面的那个类。
list.setAdapter(new Adapter() {
public View getView() {
final Adapter that = this;
button.setListener(new Listener() {
public void onClick() {
that.remove(item);
}
);
}
});
我不确定这里的命名是什么好。也许是适配器
?
关于java - 两个双重嵌套的匿名内部类。如何获得一级匿名类(class)成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959837/