[英]Java: calling outer class method in anonymous inner class
后者更为明确,如果内部类中存在相同名称的方法,则允许您调用外部类方法。
class OuterClass {
void foo() { System.out.println("Outer foo"); }
View.OnClickListener mListener1 = new View.OnClickListener() {
void foo() { System.out.println("Inner foo"); }
@Override public void onClick(View view) {
foo(); //Calls inner foo
OuterClass.this.foo(); //Calls outer foo
}
}
View.OnClickListener mListener2 = new View.OnClickListener() {
@Override public void onClick(View view) {
foo(); //Calls outer foo
OuterClass.this.foo(); //Calls outer foo
}
}
}
当您声明匿名类时,内部范围会完全改变,虽然看起来您正在调用同一个对象,但引用在这里得到了更改,因此在处理匿名内部类/方法时,最好像稍后那样显式调用外部类实体
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.