【发布时间】:2021-09-23 05:32:10
【问题描述】:
据我所知,静态字段和块是在一个类中从上到下处理的。我的意思是,必须先声明一个字段(静态字段),然后才能在静态块中使用它。必须首先声明静态字段,然后是修改该静态字段的静态块。对吧?
像这样:
private static Map<String, Object> map = new HashMap<>();
static {
map.put("key", "value");
}
然后编译。如果我们像这样颠倒顺序:
static {
map.put("key", "value");
}
private static Map<String, Object> map = new HashMap<>();
编译失败。
但是,如果我这样写。
static {
map = new HashMap<>();
}
private static Map<String, Object> map;
成功了?!有人知道发生了什么吗?如果我为 map 分配一个新对象并不介意,但如果我在地图上放一些东西,它会编译失败。
请给我一个合理的答案。
【问题讨论】:
标签: java static-methods