gpt4 book ai didi

java - 泛型 - 继承类修改泛型类型并导致编译器错误

转载 作者:行者123 更新时间:2023-11-30 07:32:20 25 4
gpt4 key购买 nike

我有以下抽象类:

public abstract class PresenterWithBreadCrumb<V extends View> extends PresenterWidget<V> {
...

我想要做的是扩展这个类并修改类型V。除了View接口(interface)提供的方法之外,我还需要一个方法。新实例如下。

public abstract class ApplicationPanelPresenter<V extends ApplicationPanelPresenter.ApplicationPanelView>
extends PresenterWithBreadCrumb<ApplicationPanelPresenter.ApplicationPanelView> {

public interface ApplicationPanelView extends View {
void clearPanel();
}

当我尝试重构代码并将最初扩展 PresenterWithBreadCrumb 的类更改为 ApplicationPanelPresenter 时,我引入了一个编译错误。

之前的示例:

public class RequirementsPanelPresenter extends PresenterWithBreadCrumb<RequirementsPanelPresenter.MyView>
implements RequirementsPanelUiHandlers {

interface MyView extends View, HasUiHandlers<RequirementsPanelUiHandlers> {
}

@Inject
RequirementsPanelPresenter(EventBus eventBus, MyView view) {
super(eventBus, view);
getView().setUiHandlers(this);
}

之后的示例:

public class RequirementsPanelPresenter extends ApplicationPanelPresenter<RequirementsPanelPresenter.MyView>
implements RequirementsPanelUiHandlers {

interface MyView extends ApplicationPanelPresenter.ApplicationPanelView, HasUiHandlers<RequirementsPanelUiHandlers> {
}

@Inject
RequirementsPanelPresenter(EventBus eventBus, MyView view) {
super(eventBus, view);
getView().setUiHandlers(this);
}

编译错误出现在语句getView().setUiHandlers(this);

编译错误为:

The method setUiHandlers(RequirementsPanelPresenter) is undefined for the type ApplicationPanelPresenter.ApplicationPanelView

为什么编译器将“this”解释为ApplicationPanelPresenter.ApplicationPanelView?我的更改是如何引入此错误的?我该如何修复它?

其他上下文

  • getView() 方法在父类中定义,并返回类型 V extends View

  • setUiHandlers 方法来自扩展接口(interface) HasUiHandlers。该方法参数的类型为C extends UiHandlers。 DemandPanelPresenter 正在实现的接口(interface) RequirementsPanelUiHandler 扩展了 UiHandlers

最佳答案

乍一看,我希望它是

public abstract class ApplicationPanelPresenter<
V extends ApplicationPanelPresenter.ApplicationPanelView>
extends PresenterWithBreadCrumb<V> {

不过,您的代码太复杂了,我无法一眼看出是否可以解决问题。

关于java - 泛型 - 继承类修改泛型类型并导致编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35922984/

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