gpt4 book ai didi

传递父类(super class)型的 Java 接口(interface)方法

转载 作者:行者123 更新时间:2023-12-01 18:40:28 24 4
gpt4 key购买 nike

我有一个界面,其中包含类似的方法

public interface IFilterManager {
public FilterAbs getFilter(String filterName);
public void saveFilter(FilterAbs filter);
}

然后我有一个类来实现这些。

public class FilterManager implements IFilterManager {
@Override
public JobFilter getFilter(String filterName) {
//Do stuff
}

@Override
public void saveFilter(JobFilter jobFilter)
//Do stuff
}
}

JobFilter是FilterAbs的具体类,eclipse对getFilter没有问题,我很困惑为什么它对saveFilter有问题。错误是

The method saveFilter(JobFilter) of type MappedJobFilterManager must override or implement a supertype method

它不应该接受任何类型的 FilterAb 作为参数吗?

最佳答案

问题在于签名不同。

所以你的界面中有 public void saveFilter(FilterAbs filter); 并且

代码中的

public void saveFilter(JobFilter jobFilter)

请注意public 在您的界面中也是多余的。默认情况下它是隐式public的。

您可以使用通用接口(interface)来缓解此问题:

public interface SomeInterface<T extends FilterAbs> {
public T getFilter(String filterName);
public void saveFilter(T filter);
}

尽管尚不完全清楚您想要实现什么目标。

关于传递父类(super class)型的 Java 接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20099510/

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