Well, we both were a bit mistaken. I did the following test. ``` @Test public void run() { Pair pair = Pair.of("a", "b"); Map.Entry<String, String> entry = new Map.Entry<String, String>() { public String getKey() { return "a"; } public String getValue() { return "b"; } public String setValue(String value) { return null; } }; Map.Entry<String, String> entry2 = new Map.Entry<String, String>() { public String getKey() { return "a"; } public String getValue() { return "b"; } public String setValue(String value) { return null; } }; Assert.assertTrue(pair.equals(entry)); // true Assert.assertTrue(pair.equals(entry2)); // true Assert.assertTrue(entry.equals(entry)); // true Assert.assertTrue(entry2.equals(entry2)); // true Assert.assertTrue(entry.equals(entry2)); // false Assert.assertTrue(entry.equals(pair)); // false } ``` You are right about that it is an interface and it seems it has no default implementation, but it does some magic. Every instance of Map.Entry equals to itself, but not equals of something that is created the same way.
Gary D. Gregory <ggreg...@apache.org> ezt írta (időpont: 2024. szept. 26., Cs, 14:26): > > > 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 <a.e.tsvet...@gmail.com> 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 > > > } > > > ``` > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org > For additional commands, e-mail: user-h...@commons.apache.org > >