【发布时间】:2015-03-10 23:25:18
【问题描述】:
是否存在传递定律不能成立的对象或原始类型?例如
A == B, B == C 但 A != B
我不是在谈论 equals() 方法。我对 == 操作感兴趣
我们能证明这一点吗?
【问题讨论】:
-
答案是否定的;引用相等是等价关系,所有非浮点类型上的相等是等价关系,float 和 double 上的相等是传递和对称但不是自反的。
-
@LouisWasserman 我被告知这是可以证明的,这让我很好奇
-
我不确定“证明”在这里需要什么。 JLS 指定此属性是否足够?
-
@LouisWasserman 这将是创建一个场景,其中某种类型的对象将适用于我在问题中提到的内容。
-
这将证明传递性不成立,但如果 A、B 和 C 都是简单标识符,传递性确实成立。您如何期望您的主张被证明是错误的? (如果你允许突变或方法调用,所有的赌注都被取消了,我怀疑奇怪的铸造废话也可能会破坏它,但那是作弊。)