java - 接口(interface)中的默认方法,但只有静态最终字段

标签 java default-method

我知道接口(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/

相关文章:

java - 为什么我无法在接口(interface)中创建默认方法?

Java,SimpleDateFormat 在德语中产生 ParseException。英文作品

Java 8 - 默认方法 - 对遗留代码的关注

java - 在 Google App Engine (Java) 中使用祖先过滤器在事务中进行查询

java - 从 AMR-NB 文件中提取音频帧

Java 8 : Automatically composite default methods of multiple interfaces

java - 使用接口(interface)的默认方法实现方法 - 矛盾吗?

java - 接口(interface)是否提供完整的抽象?如何?

java - JFrog Artifactory Docker 镜像启动失败

java - NoClassDefFoundError com/eviware/soapui/impl/wsdl/WsdlProject