我最近在这个网站上看到了以下内容:
for (HashMap.Entry<Object,Object> e : new TreeMap<>().entrySet())
System.out.println(e);
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,这编译并运行良好.我也尝试在地图中添加条目,因此实际上有一些内容可以向下转换,但是这样做也失败了,这也很好.如何TreeMap输入一个条目HashMap.Entry?这两者甚至不在层次结构的同一分支上.
虽然现在已经解决了这个问题,但我将以下内容仅仅包含在内以下 - 以下内容无法编译:
for (TreeMap.Entry<Object,Object> e : new HashMap<>().entrySet())
System.out.println(e);
Run Code Online (Sandbox Code Playgroud)
碰巧TreeMap定义TreeMap.Entry,隐藏Map.Entry.
虽然您正在访问它HashMap,但Entry实际上是一个(隐式static)声明的成员类型Map.TreeMap#entrySet有一个返回类型Set<Map.Entry<K,V>>.这是相同的Entry类型.