【发布时间】:2023-03-24 08:09:01
【问题描述】:
// Using entrySet() to get the entry's of the map
// m is previously created Map.
Set<Map.Entry<String,Integer>> s = m.entrySet();
for (Map.Entry<String, Integer> it: s)
{
String str = it.getKey();
}
Map.Enty 只是接口。
接口没有方法getKey();的实现
为什么上面的代码有效?就像编译器如何知道getKey() 的行为一样?
【问题讨论】:
-
因为
Node<K,V>inHashMap.java实现了Map.Entry<K,V>,所以我不知道你在问什么。 -
有一个正在使用的
Map.Entry的实现。如果您使用调试器单步调试代码,您可能会找出哪个类,甚至可以单步调试该类的源代码。 -
所以你知道“接口”这个词,但显然你还没有研究它为什么存在以及如何使用它。
-
这是多态性。 “实际类型”和“表观类型”之间存在差异。简而言之,您正在阅读的代码处理的是明显的代码。任何接口的实现者都可以以这种方式使用。
-
为了打破你的世界,接口可以实现自 Java 8 以来的方法。
标签: java