我的实现看起来像这样。
@Override
public <T extends AlgorithmSuperType> T doSomethingSmart(){
//do this and that
}
如何定义此通用返回值的接口? Eclipse建议使用此接口定义。
T doSomethingSmart();
当我接受快速修复时,Eclipse会发现它的错误,并建议先加<T>
。
<T> T doSomethingSmart();
接口的这些快速修复程序都不能解决@Override实现中的冲突。
如何正确定义界面?
答案 0 :(得分:3)
界面看起来像这样:
interface YourInterfaceName {
<T extends AlgorithmSuperType> T doSomethingSmart();
}
它定义了一个带有通用方法的接口,这是您的实现定义的。
答案 1 :(得分:1)
由于T
是一个通用参数,因此您需要将方法或类声明为通用参数。 Eclipse正在建议第一种选择。以下是第二步:
public class<T extends AlgorithmSuperType> MyClass implements SomeInterface<T> {
@Override
public T doSomethingSmart(){
//do this and that
}
}
请注意,界面应为
public interface<T extends AlgorithmSuperType> SomeInterface {
T doSomethingSmart();
}
或
public interface SomeInterface {
<T extends AlgorithmSuperType> T doSomethingSmart();
}
(在后一种情况下,MyClass
应该是“实现SomeInterface”而不是implements SomeInterface<T>
。
答案 2 :(得分:0)
如果是界面,那么您可以使用:
AlgorithmSuperType fetchAlert();
但是从这种类型继承的所有其他类也都可以,不仅仅是。