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)
我很感激你的建议.
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)
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |