如何使接口实例方法仅接受同一类的参数?

Dun*_*ril 8 java methods interface

我想使用这样的界面:

public interface ResultItem {
    public int getConfidence();
    public boolean equals(ResultItem item);
    public ResultItem cloneWithConfidence(int newConfidence);
}
Run Code Online (Sandbox Code Playgroud)

我通过表示语音识别结果的不同类型的对象来实现它.

我的想法是,我希望只比较同类的结果.也就是说,如果我创建一个类IntResult实现ResultItem,我希望方法签名变为:

public boolean equals(IntResult item);
public IntResult cloneWithConfidence(int newConfidence);
Run Code Online (Sandbox Code Playgroud)

我觉得我的界面中存在设计缺陷,因为现在我在cloneWithConfidence和返回ResultItem的其他方法的结果上使用非常难看的强制转换.

有没有更好的办法?

NPE*_*NPE 11

有一种常见的习语如下:

public interface ResultItem<T extends ResultItem<T>> {
    public int getConfidence();
    public boolean equals(T item);
    public T cloneWithConfidence(int newConfidence);
}

public class IntResult implements ResultItem<IntResult> {
  //...
}
Run Code Online (Sandbox Code Playgroud)