간단한 상속 문제가 있는데 .. 해결할 수 없습니다.
이것은 기본 클래스입니다.
public abstract class RpcOkCallback extends RpcTupleCallback
{
// [...] constructor [...]
public boolean callback(int responseCode, final String module, boolean flag){
if (flag){
return onResponse(responseCode, module);
} else {
return onError(responseCode, module);
}
return false;
}
protected abstract boolean onResponse(int responseCode, String module);
protected boolean onError(int responseCode, String module){
return true;
}
}
그리고 이것은 기본 클래스를 재정의하는 익명 클래스입니다.
new RpcOkCallback("color_seek_ir", "set_flash_ir"){
@Override
protected boolean onResponse(int responseCode, String module) {
if (seekBar != null) seekBar.setEnabled(true);
return true;
}
@Override
protected boolean onError(int responseCode, String module) {
if (seekBar != null) seekBar.setEnabled(true);
return true;
}
}
질문은 .. onResponse 메서드가 호출 될 때 재정의 된 메서드를 올바르게 호출하는 반면 onError 메서드를 호출 할 때 기본 케이스 ( "return true"메서드)를 호출하는 이유는 무엇입니까? 나는 "return error"메소드도 추상화를 선언하려고했고 그것은 작동한다 ... 그러나 나는 모든 익명 클래스에서 이와 같은 기본적인 메소드를 선언하고 싶지 않다.
어떤 생각? 감사 :)
나는 문제를 발견했다. 실제로 올바르게 작동하지만 (재정의하는 부분) 콜백은 이미 다른 "onError"메소드 (재정의되지 않음)에 의해 처리되었으며 "return true"로 인해 이벤트가 최종 목적지에 도달하기 전에 취소되었습니다.
초록을 추가하고 모든 방법을 정의하여 작업을 수행 했으므로 corsair에게 감사드립니다 (답변을 추가하거나 질문을 해결 한 것으로 표시 할 내용을 표시합니다 :)).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다