我的实现看起来像这样。
@Override
public <T extends AlgorithmSuperType> T doSomethingSmart(){
//do this and that
}
如何为该通用返回值定义接口? Eclipse建议使用此接口定义。
T doSomethingSmart();
当我接受快速修复后,Eclipse会发现问题,并建议在
<T>
之前添加。<T> T doSomethingSmart();
这些接口的快速修复都不能解决@Override实现中的冲突。
任何线索如何正确定义接口?
最佳答案
由于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
应该是“ implements SomeInterface”,而不是“ implements SomeInterface<T>
”。