【发布时间】:2018-07-12 02:08:53
【问题描述】:
我正在尝试在 Java 中创建一个 HashMap 并使用 .put() 方法填充它。日食的反射让我很困惑。
一开始我用下面的方式初始化了HashMap,但是似乎.put()对于hashMap对象是不可访问的。
public class NewMap {
Map<Integer, String> hashMap = new HashMap<>();
hashMap.put(10, "Amir");
hashMap.put(20, "Bob");
}
然后我尝试添加一对大括号,它可以工作。
public class NewMap {
Map<Integer, String> hashMap = new HashMap<>();
{
hashMap.put(10, "Amir");
hashMap.put(20, "Bob");
}
}
我试图弄清楚它背后的机制,但失败了。所有相关类均已正确导入。任何人都可以阐明它吗?
【问题讨论】:
-
您的代码需要在一个块中,因此后者编译的原因。
-
您只能在代码块中初始化一个类字段。代码块在 { ...} 内。它可以是一个方法或构造函数,也可以像你一样在 { ... } 内。