Sel*_*kie 19 java android inner-classes
最近,我在一个android项目中遇到了一个神秘的问题,我在这里描述.我以某种方式解决了这个问题,但仍然不知道其背后的确切原因.
假设我想在内部类中调用函数foo().问题是,直接调用它之间的区别是什么
foo();
Run Code Online (Sandbox Code Playgroud)
或者使用外部类实例调用它
OuterClass.this.foo();
Run Code Online (Sandbox Code Playgroud)
此外,如果有人能查看我与此相关的最后一个问题,我将不胜感激,并给我一个关于错误发生原因的线索.非常感谢.
PS:我在某处读到非静态内部类总是持有外部类的实例.所以如果我只使用foo(),它将使用该实例调用外部函数?
Jak*_*ton 24
后者更明确,如果内部类中存在具有相同名称的外部类方法,则允许您调用外部类方法.
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10350 次 |
| 最近记录: |