对于一个HashMap,使用其Entry,只能使用Map.Entry,HashMap.Entry为啥不能直接用?

2025-03-21 22:26:42
推荐回答(2个)
回答1:

Entry在HashMap中的声明为static class Entry implements Map.Entry,虽然它声明在HashMap内,但是因为声明为static,对我们而言它就是外部类了,如果要用HashMap中的Entry的话,直接Entry就可以了,不能HashMap.Entry,而在Map中,Entry的声明为interface Entry,他是内部接口,用的话必须得Map.Entry来使用。

之所以不能用HashMap.Entry是因为包访问控制的原因,默认是包访问控制,只能在统一包内才能访问,包外是不可见的。

回答2:

Map中定义了内部类Map.Entry
HashMap实现了Map,因而继承了它的内部类Map.Entry
但是HashMap没有自己定义一个HashMap.Entry
内部类相当于其中的一个元素,它是什么类型就必须是什么类型
所以不存在HashMap.Entry,只有Map.Entry