我知道接口(interface)中的所有字段都是隐式的static and final .这在 Java 8 之前是有意义的。
但是随着默认方法的引入,接口(interface)也具备了抽象类的所有能力。因此,非静态和非最终字段也是必需的。
但是当我尝试正常声明一个字段时,它默认变成静态和最终的。
有没有办法在 Java 8 的接口(interface)中声明非静态和非最终字段。
还是我完全误解了这里的内容???
最佳答案
Java 接口(interface)中的所有字段都是public static final
。
即使在添加了默认方法之后,在接口(interface)中引入可变字段仍然没有任何意义。
由于接口(interface)演化原因添加了默认方法。您可以向接口(interface)添加新的默认方法,但只有在实现使用接口(interface)中已定义的方法时才有意义:
public interface DefaultMethods {
public int getValue();
public default int getValueIncremented() {
if (UtilityMethod.helper()) { // never executed, just to demonstrate possibilities
"string".charAt(0); // does nothing, just to show you can call instance methods
return 0;
}
return 1 + getValue();
}
public static class UtilityMethod {
public static boolean helper() {
return false;
}
}
}
关于java - 接口(interface)中的默认方法,但只有静态最终字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31144210/