Hi everyone, I'm sure somebody has seen this stack overflow before. My question is: is it expected (which should be documented to warn people not to do this), or is it considered a bug (which should be fixed)?
Example: https://gist.github.com/rednaxelafx/930f8979473185cfc0a0 import java.util.*; public class HashMapStackOverflow { public static void main(String[] args) throws Exception { HashMap<String, Object> map = new HashMap<>(); map.put("self", map); System.out.println(map.hashCode()); } } $ ~/sdk/jdk1.8.0/Contents/Home/bin/java HashMapStackOverflow Exception in thread "main" java.lang.StackOverflowError at java.util.AbstractMap.hashCode(AbstractMap.java:505) at java.util.Objects.hashCode(Objects.java:98) at java.util.HashMap$Node.hashCode(HashMap.java:296) at java.util.AbstractMap.hashCode(AbstractMap.java:507) at java.util.Objects.hashCode(Objects.java:98) at java.util.HashMap$Node.hashCode(HashMap.java:296) at java.util.AbstractMap.hashCode(AbstractMap.java:507) at java.util.Objects.hashCode(Objects.java:98) at java.util.HashMap$Node.hashCode(HashMap.java:296) at java.util.AbstractMap.hashCode(AbstractMap.java:507) ... This will cause a stack overflow because HashMap.hashCode() is inherited from AbstractMap, which sums the hash code of each entry, while one of the entries is itself so it goes recursive. Thanks, Kris
