当我新建一个Hashtable时,为什么要调用put方法?

hua*_*hui 4 java hashtable

我正在阅读代码Hashtable并且感到困惑并且有一些问题.我这样编码:

Hashtable table = new Hashtable();
table.put(table, 1);
int code = table.hashCode();
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 当我hashCode像第三行代码一样调用方法时,为什么它不是无限循环?我认为这是一个无限循环.

  2. 当我调试这段代码时,我发现代码new Hashtable()会导致调用put方法,为什么?

Jef*_*ica 7

  1. 根据我正在阅读的OpenJDK消息来源,有一个专门用于防范Hashtable包含自身情况的警卫.

  2. 我没有put在构造函数中看到任何引用.你有答案可以在你的答案中发布吗?

  • +1.很好的发现(这是一个可怕的黑客). (2认同)