java2个对象比较不同,应该不同类别的2个Java对象是否相等?

我正在尝试编写一些通用代码,以根据字段列表定义类相似性和哈希码。在写我的equals方法时,我想知道,如果基于Java惯例,不同的两个对象应该是相等的。让我举一些例子;

class A {

int foo;

}

class B {

int foo;

}

class C extends A {

int bar;

}

class D extends A {

void doStuff() { }

}

...

A a = new A(); a.foo = 1;

B b = new B(); b.foo = 1;

C c = new C(); c.foo = 1; c.bar = 2;

D d = new D(); d.foo = 1;

a.equals(b); //Should return false, obviously

a.equals(c);

c.equals(a); //These two must be the same result, so I'd assume it must be false, since c cant possible equal a

a.equals(d); //Now this one is where I'm stuck.

我看不出有什么理由在最后一个例子中,两个人不应该是平等的,但他们确实有不同的阶级。任何人都知道什么约会规定如果它们相等,那么一个equals方法应该如何处理呢?

编辑:如果有人对这个问题背后的代码感兴趣,请参阅:https://gist.github.com/thomaswp/5816085这有点脏,但我欢迎对这一点的评论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值