sách gpt4 ăn đã đi

java - Triển khai phương thức Equals() ưa thích

In lại 作者:搜寻专家 更新时间:2023-11-01 04:03:18 29 4
mua khóa gpt4 giày nike

这是一个关于当我需要在列表中查找对象实例时如何实现 equals 方法的问题,该实例的值是我在其成员中拥有的实例之一。

我有一个实现了 equals 的对象:

class User {

chuỗi id riêng tư;

public User(id) {
id này = id;
}

public boolean equals(Object obj) {
if (!(obj instanceof User)) {
trả về false;
}
return ((User)obj).id.equals(this.id);
}
}

现在如果我想在列表中找到一些东西,我会做这样的事情:

public function userExists(String id) {
List users = getAllUsers();
return users.contains(new User(id));
}

但这也许是更好的实现方式?

class User {

chuỗi id riêng tư;

public boolean equals(Object obj) {
if (!(obj instanceof User)) {
trả về false;
}
if (obj instanceof String) {
return ((String)obj).equals(this.id);
}
return ((User)obj).id.equals(this.id);
}
}

用这个代替:

public function userExists(String id) {
List users = getAllUsers();
return users.contains(id);
}

câu trả lời hay nhất

用第二种方法是危险的,因为它破坏了等式的对称属性。

Java 期望 bằng() 的实现是自反的、对称的和可传递的。第二种实现打破了对称性:如果将 Người sử dụng 与表示其 ID 的 Sợi dây 进行比较,您将得到 ĐÚNG VẬY,但如果将字符串与用户,你会得到一个SAI

关于java - 首选 Equals() 方法实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10017689/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress