最后的代码产生编译错误:
NotApplicable.java:7: run() in cannot be applied to (int)
run(42);
^
1 error
问题是为什么?为什么javac认为我在调用run(),却没有找到run(int bar)?它正确地调用了 foo(int bar)。为什么我必须使用 NotApplicable.this.run(42);?它是一个错误吗?
public class NotApplicable {
public NotApplicable() {
new Runnable() {
public void run() {
foo(42);
run(42);
// uncomment below to fix
//NotApplicable.this.run(42);
}
};
}
private void run(int bar) {
}
public void foo(int bar) {
}
}