首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实现.equals(Die aDie)方法和静态变量

实现.equals(Die aDie)方法和静态变量
EN

Stack Overflow用户
提问于 2012-02-28 23:14:02
回答 7查看 661关注 0票数 3

我正在我的程序中创建方法.equals(Die aDie)。我是否要比较每个实例变量,包括静态变量?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-02-28 23:16:18

根据定义,静态变量不是实例变量,因此在同一个类的所有实例中总是相等的。

票数 2
EN

Stack Overflow用户

发布于 2012-02-28 23:26:34

下模布尔值等于(

aDie)

是错误的,则类将调用equals(Object)方法并忽略您的等于(Die)。还要使用equals(Object)使用的相同字段实现int hashCode()方法。

代码语言:javascript
运行
复制
 @Override public boolean equals(Object aDie){
     if(aDie == null || aDie.getClass() != Die.class)return false;
     if(aDie == this)return true;
     Die other = (Die)aDie;
     ...   
 }
 @Override public int hashCode(){
     ...
 }

您可以忽略静态字段,因为它们对于每个骰子都是相同的。

票数 4
EN

Stack Overflow用户

发布于 2012-02-28 23:17:50

绝对不是静态的。

是否比较所有实例变量取决于是什么决定了对象的“身份”,也就是说,什么时候你认为它们是相等的?这只能在您的特定应用程序的上下文中决定-我们需要更多信息。

例如,如果您有一个表示书籍的类,如果您只想存储关于两本书的元数据(标题、作者),则可能只比较ISBN编号来确定两本书是否为同一本书。如果您合并了两个这样的数据库,您可能希望消除重复记录。

但是,如果您正在实现实际实体图书的图书馆目录,则每个副本都很重要且各不相同,因此您可以比较ISBN和副本数量。如果您合并了两个库,您应该能够检测到重复的副本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9484486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档