gpt4 book ai didi

java - Java中使用泛型类型实现泛型接口(interface)

转载 作者:行者123 更新时间:2023-12-02 01:25:50 25 4
gpt4 key购买 nike

我正在尝试使用泛型类型在 Java 中实现泛型接口(interface),但遇到编译错误。我想知道以下是否可行:

public class ListResponse<T> {
private List<T> response;

public ListResponse(List<T> response) {
this.response = response;
}

public List<T> getResponse() {
return response;
}
}

还有麻烦的类:

import java.util.function.Consumer;
import java.util.List;
import com.myorg.response.ListResponse;

public class ListPresenter<T> implements Consumer<ListResponse<T>> {
private ListResponse<T> response;

public <T> void accept(ListResponse<T> response) {
this.response = response;
}

// Rest of class
}

我希望有这样的调用代码:

ListPresenter<Integer> presenter = new ListPresenter<>();

但是我收到编译错误并显示以下消息:

 error: ListPresenter is not abstract and does not override abstract
method accept(ListResponse<T>) in Consumer [ERROR] where T is a
type-variable: [ERROR] T extends Object declared in class
ListPresenter

最佳答案

您正在重新定义通用参数 <T>方法 accept(...) 。该机制类似于通过同名的局部变量隐藏属性。

Tpublic <T> void accept(ListResponse<T> response)没有“耦合”到Tpublic class ListPresenter<T> implements Consumer<ListResponse<T>> .

可以通过删除第一个 <T> 来解决此问题关于方法声明accept(...) :

public class ListPresenter<T> implements Consumer<ListResponse<T>> {
...
public void accept(ListResponse<T> response) {
...
}
...
}

关于java - Java中使用泛型类型实现泛型接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56960113/

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