【发布时间】:2014-03-07 21:24:17
【问题描述】:
我最近意识到你可以做到这一点(至少在 Java 1.7+ 中)。
static interface MyInter {
int foo = 3;
}
static {
System.out.println(MyInter.foo);
}
这究竟是如何合法的?
java编译器是否只是将int foo变成了幕后的最终静态字段?
(如果是这样的话,哇,Java 越来越疯狂了!)
【问题讨论】:
-
static块在哪里? -
嗯,就在
MyInterdecl的正下方,在同一个班级 -
因为这正是接口中声明的字段的工作方式,并且一直有效。
-
这个特性从 Java 1.0 开始就已经存在。只有你对 Java 的看法在发生变化。
标签: java