Ant*_*val 51 java overriding requirements interface equals
我有一堆实现通用接口的类:Command.
这一堆课程转到了Map.
为了使Map正常工作,我需要每个实现Command的类来覆盖该Object.equals(Object other)方法.
没关系.
但我想强迫平等的压倒一切.=>当实现命令的东西不重写等于时出现编译错误.
这可能吗?
编辑:BTW,我还需要强制重写哈希码...
ska*_*man 83
不,你不能.但是,您可以使用抽象基类而不是接口,并使用equals()abstract:
abstract class Command {
// put other methods from Command interface here
public abstract boolean equals(Object other);
public abstract int hashCode();
}
Run Code Online (Sandbox Code Playgroud)
然后Command 必须提供自己的equals和hashCode方法的子类.
强制API用户扩展基类通常是不好的做法,但在这种情况下可能是合理的.此外,如果你让Command一个抽象基类,而不是一个接口,而不是引入人造基类除命令接口,那么就没有犯错的API的用户的风险.
Pie*_*rre 17
你可以从抽象的XObject而不是java.lang.Object扩展你的对象吗?
public abstract class XObject
extends Object
{
@Override
public abstract boolean equals(Object o);
}
Run Code Online (Sandbox Code Playgroud)