Re: Bug in org.apache.commons.lang3.tuple.Pair
"Gary D. Gregory" <[email protected]> Thu, 26 Sep 2024 12:26:17 -0000
| Newsgroups | gmane.comp.jakarta.commons.user |
|---|---|
| Message-ID | <pony-3e839f62-6542-4866-a471-dcfe9b99d005-user@commons.apache.org> |
On 2024/09/26 11:36:49 Dávid Szigecsán wrote: ... > Map.Entry.equals() howewer checks if the other is an instance of the same > class. Dávid, It does not, in Java 8 and 23, the method is abstract and does not define code, but the Javadoc does define expected behavior. I imagine that it was not changed to a default method for compatibility. Gary So if we want them to be equals, we should change the Map.Entry, > that is out of our limit of power. To make it symmetric we could check for > the instances of the same class also (and return false in this case), but I > think we don't want this. > > Dávid > > Alex Tsvetkov <[email protected]> ezt írta (időpont: 2024. szept. 26., > Cs 13:11): > > > Hi. > > > > I found a bug in the implementation of the method `equals` of class `Pair`. > > > > Implementation must be symmetric. Current implementation is not. > > > > Her test showing the problem: > > > > ``` > > > > @Test > > void run() { > > var pair = Pair.of("a", "b"); > > var entry = new Map.Entry<String, String>() { > > public String getKey() { return "a"; } > > public String getValue() { return "b"; } > > public String setValue(String value) { return null; } > > }; > > assertTrue(pair.equals(entry)); // true > > assertTrue(entry.equals(pair)); // false > > } > > ``` > > >