在看Java HashMap工作原理及实现这篇文章时,发现博主在断点模式下来观察hash冲突的效果挺好的,随后便想在IntelliJ IDEA中也试下。
我们先来看下HashMap.Node的代码,有4个成员变量。
|
|
如下图所示,对于HashMap.Node类型的对象,IDEA默认只显示了key,value这两个成员变量。
原因在于IDEA默认将HashMap.Node视为了Map.Entry,那么如何在Debug时以HashMap.Node的类型来查看该对象其他变量呢?
方法有二:
一. 在debugger的Variables面板中,右键该对象,找到View As选项,选择其中的Object,然后就可以看到该对象的所有属性了。
二. 采用第一种方式时,每次Debug都需要手动指定其类型,较为繁琐。对于常用的类,我们也可以在View as时点击Create按钮,为其新建类型。这样的话以后每次Debug时,无需任何设置就能在Variables面板内直接看到其准确类型的所有属性。
Create过程也很简单,在Java Type Renders窗口内,设置HashMap$Node对应的完整类名即可,如下图所示。
最后看一下,在View as中Create了HashMap及HashMap.Node后的效果。
现在已经能看到类中的所有成员变量了,那么对于静态变量该如何查看呢?这个也很简单,同样在此处右键,点击Customize Data Views…
然后在Static fields和Static final fields的选项前打勾即可~
以HashMap为例,在选中了Static fields和Static final fields的选项后,所有的静态变量也显示出来了 :)