gpt4 book ai didi

java - 强制一个类覆盖 .equals 方法

转载 作者:IT老高 更新时间:2023-10-28 20:29:52 24 4
gpt4 key购买 nike

我有一堆实现通用接口(interface)的类:Command。

而这群类去一个 map 。

为了让 Map 正常工作,我需要每个实现 Command 的类重写 Object.equals(Object other) 方法。

没关系。

但我想强制覆盖等于。 => 当实现命令的东西不覆盖 equals 时,会出现编译错误。

这可能吗?

编辑:顺便说一句,我还需要强制覆盖哈希码...

最佳答案

不,你不能。但是,您可以做的是使用抽象基类而不是接口(interface),并使 equals() 抽象:

abstract class Command {
// put other methods from Command interface here

public abstract boolean equals(Object other);
public abstract int hashCode();
}

Command的子类必须提供它们自己的equals和hashCode方法。

强制 API 用户扩展基类通常是不好的做法,但在这种情况下可能是合理的。此外,如果您将 Command 设为抽象基类而不是接口(interface),而不是在 Command 接口(interface)的添加中引入人工基类,那么您的 API 就不会有风险用户弄错了。

关于java - 强制一个类覆盖 .equals 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1612273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com