gpt4 book ai didi

java - 这等于实现吗?

转载 作者:行者123 更新时间:2023-11-29 05:24:41 25 4
gpt4 key购买 nike

我有一个缓存实现,我为其实现了 KeyObject

所以缓存是HashMap<KeyObject , List<SomeObjects>>

这个 KeyObject 类,假设它有 2 个变量 a,b;

class KeyObject {
MyObject a;
AnotherMyObject b;

KeyObject(MyObject a, AnotherMyObject b){
this.a = prop1 ; this.b= prop2;
}
}

可以吗,我根据 MyObject 和 AnotherMyObject 的属性实现了 equals 方法..

像这样说

public boolean equals(Object keyObject){
if(keyObject.isSomeType() && this.a.isSomeType(){
return keyObject.a.equals(this.a)
}
else{
return keyObject.a.equals(this.a) && keyObject.b.equals(this.b)
}
}

像上面那样的 equals 实现是常见的做法吗?

谢谢

最佳答案

三件事:

  1. 检查您要比较的对象是否为空。
  2. 使用 instanceof 确保其他对象的类型正确。
  3. 在测试相等性之前,将另一个 Object 类型转换为 KeyObject

所以像这样:

// Override annotation gives you bonus points :)
@Override
public boolean equals(Object other) {
if (other == null)
return false;

if (!(other instanceof KeyObject))
return false;

KeyObject keyObject = (KeyObject) other;

// I'm not exactly sure what this line is doing
// but I assume it's part of your program.
if(keyObject.isSomeType() && this.a.isSomeType()
return keyObject.a.equals(this.a);
else
return keyObject.a.equals(this.a) && keyObject.b.equals(this.b);
}

关于java - 这等于实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23122949/

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