다음 클래스가 있고 표시된 위치에서 arg == null에 조건부 중단 점을 설정한다고 가정합니다. 이클립스에서 작동하지 않고 "조건부 중단 점에 컴파일 오류가 있습니다"라는 오류를 표시합니다 이유 : arg를 변수로 확인할 수 없습니다 ".최종 로컬 변수에 따라 익명 내부 클래스에서 조건부 중단 점을 설정하는 방법은 무엇입니까?
관련 정보가 here 인 것을 발견했지만, val $ arg == null (val $ arg는 디버거의 변수보기에 표시된 변수 이름)로 조건을 변경하더라도 Eclipse에서 동일한 오류가 발생합니다.
public abstract class Test {
public static void main(String[] args) {
Test t1 = foo("123");
Test t2 = foo(null);
t1.bar();
t2.bar();
}
abstract void bar();
static Test foo(final String arg) {
return new Test() {
@Override
void bar() {
// I want to set a breakpoint here with the condition "arg==null"
System.out.println(arg);
}
};
}
}
조건부 중단 점 * 죽일 * 성능, 해결이되지 않도록 * 내 눈 ... 추악한 * –
이 코드를 스캔 수표를 가지고 있기 때문에 나는 종종 중단 점으로 Thread.yield()를 사용 그것의 공개되지 않도록합니다. –
이것은 항상 옵션이 아닙니다 (즉, 클래스가 별도의 Jar 파일에 정의 된 경우). 디버깅 후 코드를 다시 변경해야합니다. 이 문제를 해결하기 위해 종종 다음과 같은 코드를 변경합니다. String myArg = arg; System.out.println (myArg); – Axel