我试图在Eclipse上做一些调试,但似乎调试器对我说谎。我有一个名为Map<String, NormalizedFunction>
的函数。当我点击断点时,变量函数是可见的。当我从变量视图中选择它时,它会显示“{getX()=[]int getX()}
”,这是正确的。显然,这张地图有一个键和一个值。但是,当我打开函数变量并选择keyset
或values
时eclipse说它为null。如果它清楚地显示有一个键和一个值,并且代码运行正确,那该怎么办?
答案 0 :(得分:1)
调试器没有说谎。您假设地图的所有键都应存储在HashMap的私有keySet
字段中。但这种情况并非如此。调用keySet()
方法时,此变量会延迟填充。只需看看方法实现。
如果您想了解有关地图的信息,请使用其记录的指定API:使用显示视图,输入functions.keySet()
,右键单击并选择“评估”,然后你真的会得到地图的关键集。