gpt4 book ai didi

java - 为什么我的 equals 方法不起作用?

转载 作者:搜寻专家 更新时间:2023-11-01 01:13:40 24 4
gpt4 key购买 nike

我正在使用 ArrayList,在程序中的某一时刻,我正在使用 contains 方法来检查某个项目是否包含在 ArrayList 中。 ArrayList 包含 CharProfile 类型的对象,这是一个自定义类,它会查看其中是否包含 char。

所以我假设它在 contains 方法中使用了 equals 方法。所以类似于 CharProfile.contains(char),但它不起作用。

我覆盖了 CharProfile 中的 equals 方法:

@Override
public boolean equals(Object o) {
if (this.character == (Character)o) {
return true;
}
else {
return false;
}
}

所以它应该在 CharProfile 尝试使用它时使用我的 equals 方法,对吗?那为什么它不起作用呢?

(就“不工作”而言,我指的是 contains 总是返回 false。)

最佳答案

您正在使用 == 比较引用类型,这是错误的。您必须使用 equals,并添加适当的 null 检查。

但这仅仅是个开始。您的主要问题是您试图将 CharProfile 对象与 Character 对象进行比较。你可能需要这个:

public boolean equals(Object o) {
return o instanceof CharProfile
&& this.character.equals((CharProfile)o).character;
}

这假设您的 character 字段永远不会为 null。如果它可以为 null,您还需要在取消引用之前检查它。

关于java - 为什么我的 equals 方法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13121938/

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