繁体   English   中英

Java:为什么静态接口方法有一个体?

[英]Java: why should static interface methods have a body?

我需要使用initialize静态方法而不是static {...}块来运行一些初始化任务。 Java 8中 ,可以定义静态接口方法,但我不需要它有一个主体,我只需要知道该类实现了这个静态方法。

interface Initializable {
    static void initialize(){}
}

class Icons implements Initializable {
    public static void initialize(){
        //...
    }

    //...
}

在这种情况下使用静态接口方法的想法有什么问题?为什么不能在没有主体的情况下定义接口静态方法?

一般用途是:通过调用各自的方法初始化应用程序启动时的类Collection 初始化任务包括:建立数据库连接,渲染图标和图形,分析工作站配置等。

你想要的是不可能的。 接口仅规定了类需要实现的实例方法。

静态方法不需要运行包含类的实例,因此,如果它不需要私有成员,它原则上可以放在任何地方。 从Java 8开始,它也可以放在一个接口中,但这主要是一个组织特性:现在你可以在接口中放置“属于”接口的静态方法,而不需要为它们创建单独的类(比如Collections类。

请尝试以下源代码:

interface A { 
    static void f() { }
}

public B implements A { }

现在,尝试调用Bf()new B().f()将发出编译器错误。 您需要通过Af()调用该方法。 B类不从接口继承静态方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM