gpt4 book ai didi

java - 覆盖 Java 中的 equals() 方法 (OCJP)

转载 作者:行者123 更新时间:2023-11-30 08:07:51 26 4
gpt4 key购买 nike

我正在处理 OCJP 转储,有一个问题:

public class Person{
private String name;
public Person (String name) {this.name=name;}
public boolean equals(Person p){
return p.name.equals(this.name);
}
}

以上代码中,哪个陈述是正确的?

一个。 equals 方法没有正确覆盖 Object.equals 方法

B.编译失败,因为第5行无法访问私有(private)属性p.name

C.要正确处理基于散列的数据结构,此类还必须实现 hashCode 方法。

D.将 Person 对象添加到 java.util.Set 集合时,第 4 行中的 equals 方法将防止重复。

在转储中,正确答案是 A。我认为 equals 方法不起作用,因为 p.name 是私有(private)的。因此 B 也是正确的。如果 B 不对,equals 方法的另一个问题是什么?

最佳答案

A. the equals method does not properly override the Object.equals method.

A 是正确答案。因为equals方法的签名是:

public boolean equals(Object obj)

I think the equals method won't work because p.name is private. Thus B is also right

name 是一个私有(private)成员,但私有(private)成员在声明的类中总是可以访问的。您正在覆盖同一类中的 equals。所以它会编译。所以 B 不是正确答案。

关于java - 覆盖 Java 中的 equals() 方法 (OCJP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458599/

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