[
https://issues.apache.org/jira/browse/KAFKA-6673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16409214#comment-16409214
]
Koen De Groote edited comment on KAFKA-6673 at 3/22/18 8:31 AM:
----------------------------------------------------------------
That implementation would just do an identity comparison. Because Stamped and
Segment don't have an explicit super class, just Object.
And Object's equals is this:
{code:java}
public boolean equals(Object obj) {
return (this == obj);
}
{code}
The whole idea behind this is that the equals method should act logically the
same as the compareTo method, as to have only 1 kind of behavior.
was (Author: koendg):
That implementation would just do an identity comparison. Because Stamped and
Segment don't have an explicit super class, just Object.
And Object's equals is this:
public boolean equals(Object obj) {
return (this == obj);
}
The whole idea behind this is that the equals method should act logically the
same as the compareTo method, as to have only 1 kind of behavior.
> Segment and Stamped implement Comparable, but don't override equals.
> --------------------------------------------------------------------
>
> Key: KAFKA-6673
> URL: https://issues.apache.org/jira/browse/KAFKA-6673
> Project: Kafka
> Issue Type: Improvement
> Components: streams
> Reporter: Koen De Groote
> Priority: Minor
> Attachments: KAFKA_6673.patch
>
>
> The classes in question:
> https://github.com/apache/kafka/blob/trunk/streams/src/main/java/org/apache/kafka/streams/state/internals/Segment.java
> and
> https://github.com/apache/kafka/blob/trunk/streams/src/main/java/org/apache/kafka/streams/processor/internals/Stamped.java
> This came up while doing static analysis on the codebase on the trunk branch.
> As described by the analysis tool built into Intellij:
> {quote}
> Reports classes which implement java.lang.Comparable which do not override
> equals(). If equals() is not overridden, the equals() implementation is not
> consistent with the compareTo() implementation. If an object of such a class
> is added to a collection such as java.util.SortedSet, this collection will
> violate the contract of java.util.Set, which is defined in terms of equals().
> {quote}
>
> Implementing an equals for an object is generally a best practice, especially
> considering this caveat, where it's not the compareTo that will be used but
> the equals method.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)