我正在测试是否可以在Java界面中设置非静态非final字段。我很惊讶地看到,在Eclipse中编写程序时,如果我创建了一个类似下面的界面,它就不会抱怨。它甚至可以编译和运行:
public interface Interface
{
public String nonStaticField = "Not static";
}
当然,它阻止我改变main方法中字段的值。但是我想知道编译器是否允许缺少静态和最终单词的原因是因为它们是隐含的,或者是否存在对此语法的任何用法。
答案 0 :(得分:3)
来自documentation本身:
接口主体中的每个字段声明都是隐式的public,static和final。允许为这些字段冗余地指定任何或所有这些修饰符。
所以是的,它是隐含的,你被允许不指定它们中的任何一个因为接口内的字段必须是最终的和静态的。