Один и тот же код для всех реализаций обратного вызова в Java - PullRequest
0 голосов
/ 27 июня 2018

У меня есть интерфейс обратного вызова:

public interface OnServerDoneListener {

    void onDone(int code, byte[] body);

    void onFailure();
}

Он используется в качестве прослушивателя HTTP-запросов во многих местах приложения:

    HttpClient.getInstance().post(request, new OnServerDoneListener() {
        @Override
        public void onDone(int code, byte[] body) {

        }

        @Override
        public void onFailure() {

        }
    });

Теперь я хочу вызвать один и тот же код для всех реализаций обратного вызова onFailure (например, с использованием super). И переопределите его, если необходимо, для некоторых случаев. Как это сделать?

1 Ответ

0 голосов
/ 27 июня 2018

Определите абстрактный класс, который реализует интерфейс OnServerDoneListener, затем определите там метод onFailure.

public abstract class OnServerDoneAdapter implements OnServerDoneListener {

    public void onFailure(){
        //your defination.
    }

}

После этого вы можете передать объект (или анонимный внутренний класс) этого класса вместо интерфейса.

HttpClient.getInstance().post(request, new OnServerDoneAdapter() {        
    @Override
    public void onDone(int code, byte[] body) {

    }
});
...