gpt4 book ai didi

java - 在匿名类实例中设置的函数参数泛型

转载 作者:行者123 更新时间:2023-11-29 04:33:13 27 4
gpt4 key购买 nike

我需要一些关于泛型的帮助,目标是创建一个 onSuccess/onError 回调,将对象作为参数,在创建包装 onSuccess/onError 函数的匿名类时设置对象类型。

界面

public interface OnDataResponse<T> {
void onSuccess(T response);
void onError(String data, ResponseError error);
}

创建监听器的调用,设置onSuccess的参数类型为CreateUserResponse

createUser(new Operation.OnDataResponse<CreateUserResponse>() {
@Override
public void onSuccess(CreateUserResponse response) {

}

@Override
public void onError(String data, ResponseError error) {
}
};)

createUser() 的实现

public void createUser(OnDataResponse responseListener) {

//performing the task asynchronously
String data
// if successfull, create an object of type T
//(CreateUserResponse in this case)
// try to parse data from json to object
//create instance of T
T tInstance = new Gson().fromJson(data, type);

// call the listener, providing the expected object
responseListener.onSuccess(tInstance)
}

T 在 createUser() 中未定义

关于如何改进和使其发挥作用有什么建议吗?

最佳答案

您应该在方法中提供类型,或者如果可以在 OnDataResponse 中使用则可能更好:

public <T> void createUser(Class<T> type, OnDataResponse responseListener) { ... }

关于java - 在匿名类实例中设置的函数参数泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42928624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com