같은 이름의 익명 클래스의 외부에 메소드를 호출 할 수 없습니다? javac이 run()을 호출하고 run (int bar)을 찾지 못하는 이유는 무엇입니까? foo (int bar)를 올바르게 호출했습니다. 왜 내가 NotApplicable.this.run (42);을 사용해야합니까? 그게 버그 야? 당신이 new Runnable() {}
범위를 입력 할 때 run
이 다시 선언되고 있기 때문에이유는 끝이 코드는 컴파일 오류가 발생
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) {
}
}
foo (int bar)가 올바르게 호출 된 이유를 설명하지 않았습니다. – Pyrolistical
"이 동작은 두 메서드의 이름이 '실행되지 않은 경우에도 표시됩니다'"부분을 제외하고 올바른 답변입니다. 컴파일러는 메소드의 이름과 일치하는 첫 번째 메소드의 중첩 트리를 검색합니다. – DJClayworth