Ole*_*lov 7 java methods interface
我需要使用initialize静态方法而不是static {...}块来运行一些初始化任务.在Java 8中,可以定义静态接口方法,但我不需要它有一个主体,我只需要知道该类实现了这个静态方法.
interface Initializable {
static void initialize(){}
}
class Icons implements Initializable {
public static void initialize(){
//...
}
//...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下使用静态接口方法的想法有什么问题?为什么不能在没有主体的情况下定义接口静态方法?
一般目的是:Collection通过调用各自的方法来初始化应用程序启动时的类.初始化任务包括:建立数据库连接,渲染图标和图形,分析工作站配置等.
你想要的是不可能的.接口仅规定了类需要实现的实例方法.
静态方法不需要运行包含类的实例,因此,如果它不需要私有成员,它原则上可以放在任何地方.从Java 8开始,它也可以放在一个接口中,但这主要是一个组织特性:现在你可以在接口中放置"属于"接口的静态方法,而不需要为它们创建单独的类(比如Collections班级).
请尝试以下源代码:
interface A {
static void f() { }
}
public B implements A { }
Run Code Online (Sandbox Code Playgroud)
现在,尝试调用B.f()或new B().f()将发出编译器错误.你需要调用方法A.f().该类B不从接口继承静态方法.
| 归档时间: |
|
| 查看次数: |
2524 次 |
| 最近记录: |