说实话,我需要为多个班级使用Retofit Callback。我不想在每个UI页面中使用onResponse和onFailour方法编写回调接口。
所以我决定编写一个实现Retrofit Callback接口的全局类。
但我的问题是,我想把它变成Generic,因为有很多不同的ResponseParser类会使用这个全局类。
我尝试过如下,但面临一点问题。
public class WebAPIControler implements Callback<TResponse>{
@Override
public void onResponse(Call<TResponse> call, Response<TResponse> response) {
}
@Override
public void onFailure(Call<TResponse> call, Throwable t) {
}
}
这里编译器无法找到 TResponse 类。这里TResponse是一个泛型类,我想处理所有的ResponseParser类之王。所以我给它命名为T或TResponse。请帮我解决这个问题。
答案 0 :(得分:0)
您必须首先将您的类作为泛型类,然后实现通用接口。
public class WebAPIControler implements Callback<T>{
@Override
public void onResponse(Call<T> call, Response<T> response) {
}
@Override
public void onFailure(Call<T> call, Throwable t) {
}
}
什么是T?
E - Element (used extensively by the Java Collections Framework)
K - Key
N - Number
T - Type
V - Value
S,U,V etc. - 2nd, 3rd, 4th types
我建议您只实现通用接口,您的类不需要是通用的。
<强>更新强>
a.create Interface
interface CustomSubscriber<T> {
void test(T object);
}
b。使用任何对象实现您的界面
public class WebAPIControler implements CustomSubscriber<JsonObject>{
@Override
public void test(JsonObject object) {
}
}
答案 1 :(得分:0)
正如其他人所评论的那样,您所缺少的是public class WebAPIControler<T>
中的通用类型声明。这就是编译器抱怨T不存在的原因。
public class WebAPIControler<T> implements Callback<T> {
@Override
public void onResponse(Call<T> call, Response<T> response) {
}
@Override
public void onFailure(Call<T> call, Throwable t) {
}
}