我的实现看起来像这样。

@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>”。

10-04 18:03