- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为“工作”的界面
public class interface Work {
boolean completeWork(Job j);
}
然后我有一个复合类
public class CompositeWork implements Work {
private Set<Work> childWork = new HashSet<>();
public boolean completeWork(Job j) {
return childWork.stream().allMatch(w -> w.completeWork(j));
}
public void addWork(Work w) {
childWork.add(w);
}
}
我有以下不同的工作类型:
public class EasyWork implements Work {
public boolean completeWork(Job j) {
<do some work>
}
}
public class HardWork implements Work {
private String id;
public Hardwork(String id) {
this.id = id;
}
public boolean completeWork(Job j) {
<do some work>
}
}
客户端填充 CompositeWork 像这样
public class Client {
public static void main(String[] args) {
CompositeWork workHolder = new CompositeWork();
workHolder.add(new EasyWork());
workHolder.add(new EasyWork());
workHolder.add(new HardWork("1"));
workHolder.add(new HardWork("2"));
}
}
强制 childWork
的唯一性在CompositeWork
在HashSet<>()
我在哪里实现hashcode()
和equals()
?
工作界面会出现这种情况吗?
CompositeWork 类?
或者是在 EasyWork 和 HardWork 内部实现的?
最佳答案
我们无法回答您的问题。这取决于您希望类的行为方式。
任何类的默认行为是不同的实例彼此比较不相等。如果您同意所有 EasyWork
对象都是不同的,并且所有 HardWork
对象都是不同的,即使它们包含相同的数据,那么您不需要执行任何操作。 默认方法就足够了。
否则,您应该具体情况具体分析检查每个类:
如果您希望 HardWork
对象在具有相同 id
的情况下相等,那么您需要重写 equals( )
和 HardWork
中的 hashCode()
。如果没有,请不要打扰。
同样,如果 EasyWork
对象应该彼此相等,那么您也需要在那里覆盖它们。如果没有,请不要打扰。
此外,如果您希望 CompositeWork
对象在具有相同 Set
子对象的情况下彼此相等,那么您也应该在那里重写它们。如果没有,请不要打扰。
关于java - 实现 hashcode 和 equal 的责任,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55543551/
理想情况下,Spring MVC 应用程序中的 Controller 必须接收请求、将请求发送到 API、将(调用的)结果加载到模型(以便 View 随后呈现它)并转发到 View 。他们不应该再做了
我是一名优秀的程序员,十分优秀!