通用接口混乱

avi*_*iad 3 java generics interface

我试图在一个(ICountable)中封装3个接口,并使具体类实现这个封装接口.`ICountable码:

public interface ICountable extends IAddable, Cloneable, Serializable {}
Run Code Online (Sandbox Code Playgroud)

Addable 接口定义是:

public interface IAddable<T> {
    T add(T other);
}
Run Code Online (Sandbox Code Playgroud)

现在当我试图ICountable在具体的类(BaseCounter)中实现时,我得到的错误是并非所有方法都被实现(抱怨add方法).我不明白为什么.的BaseCounter代码如下:

public class BaseCounter implements ICountable {
    @Override
    public BaseCounter add(BaseCounter other) {
        // TODO Auto-generated method stub
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

add方法签名更改为

public ICountable add(ICountable other) 
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.然而,我最初想要的是创建一个ICountable扩展3个其他接口(2个标记和1个接口,描述实现类add在相同类型的对象上执行的能力).为了使add方法实现BaseCounter看起来像我需要改变:

public BaseCounter add(BaseCounter other)
Run Code Online (Sandbox Code Playgroud)

我很感激你的建议.

ale*_*y28 7

1将通用添加到ICountable

public interface ICountable<T> extends IAddable<T>, Cloneable, Serializable {}
Run Code Online (Sandbox Code Playgroud)

2在实现中指定generic

public class BaseCounter implements ICountable<BaseCounter> {
    @Override
    public BaseCounter add(BaseCounter other) {
        // TODO Auto-generated method stub
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)