0

我试过搜索,但没有找到这个确切的问题。我正在尝试创建一个实现 RxJava 观察者的抽象类型。这种新类型 RemoteObserver 将包装一个 Retrofit2 Response 对象,该对象包装了一些通用类型。我的代码如下,注释中有错误。

我需要类型 A,因为这个泛型是 response.body() 返回并在 onSuccess(..) 中使用的类型。

public abstract class RemoteObserver<A, T extends Response<A>> implements Observer<T<A>> { // Error: Type 'T' does not have Type Parameters

    @Override
    public final void onNext(@NonNull Response response) {
        switch (response.code()) {
            case HttpsURLConnection.HTTP_OK:
            case HttpsURLConnection.HTTP_CREATED:
            case HttpsURLConnection.HTTP_ACCEPTED:
            case HttpsURLConnection.HTTP_NOT_AUTHORITATIVE:
                if (response.body() != null) {
                    onSuccess(response.body()); // Error: onSuccess(A) cannot be applied to (java.lang.Object)
                }
                break;

            case HttpsURLConnection.HTTP_UNAUTHORIZED:
                onUnauthorized();
                break;

            default:
                onError(new Throwable("Default " + response.code() + " " + response.message()));
        }
    }

    public abstract void onSuccess(A response);

    public abstract void onUnauthorized();

    public abstract void onError(Throwable T);
}

任何帮助将非常感激。

4

0 回答 0