我正在尝试确定以下问题的最佳方法:只有两个属性的对象
我有一个名为Desk的类。书桌有很多属性。办公桌上可能有一些物体。当前的应用程序指定它可以在桌面上放置铅笔,计算机或杯子。未来可能会添加更多的对象。它可以有一个或没有一个对象。铅笔具有Color属性,所有对象都有一个ID和名称。所有这些信息必须是持久的,因此以某种形式存储在数据库中。
难道我:
public class Desk {
public int property1;
public int property2;
...
public ISet<DeskObject> deskObjects;
}
public DeskObject {
public int deskObjectID;
public String name;
public DeskObject(name) {
this.name = name;
}
}
public Computer extends DeskObject {
DeskObject("Computer");
}
public Pencil extends DeskObject {
DeskObject("Pencil);
public Color color;
}
我还需要很容易地分辨哪些对象台包含在O(1)时间。这意味着我将不得不重写hashcode和等于(可能通过返回ID)DeskObjects,所以我可以做set.contains(object)。这似乎是矫枉过正和滥用对象。当然有更好的解决方案?
如果我理解你的Q,当你需要比较2个对象时,使用重写'Equals'和反过来'Hashcode',是吗? –
啊,是的,例如,我可以判断书桌是否有铅笔。 – BobTurbo