2

我的实现看起来像这样。

@Override
public <T extends AlgorithmSuperType> T doSomethingSmart(){
    //do this and that
}

我如何定义这个通用返回值的接口?Eclipse 推荐这个接口定义。

T doSomethingSmart();

当我接受快速修复时,Eclipse 会发现它的错误并建议在<T>.

<T> T doSomethingSmart();

这些接口的快速修复都不能解决@Override 实现中的冲突。

任何线索如何正确定义接口?

4

3 回答 3

3

界面看起来像这样:

interface YourInterfaceName {
    <T extends AlgorithmSuperType> T doSomethingSmart();
}

这定义了一个带有泛型方法的接口,这是您的实现所定义的。

于 2013-08-25T16:23:12.330 回答
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应该是“implements SomeInterface”而不是implements SomeInterface<T>.

于 2013-08-25T16:23:44.043 回答
0

如果它是接口,那么您可以使用:

算法超类型 fetchAlert();

但是从这种类型继承的所有其他类也可以,不仅仅是T。

于 2013-08-25T16:24:37.347 回答