繁体   English   中英

没有主体的接口存根方法如何产生效果?

[英]How does an interface stub method with no body, can have an effect?

您好,所以我正在学习Java,我有一个让我感到困惑的问题,当我们实现某些接口并覆盖它们的空方法时,即使我们在调用有效果的方法时未在覆盖中放置任何内容,也是如此。

引起我困惑的一些具体示例如下,

  • 实现AutoCloseable接口并覆盖其close()方法,将使我们能够关闭对象,

  • 如果对JavaFx应用程序重写它,则对于Initializable接口也是如此,这将初始化我们的控件,并且在两种情况下,我们都不会在重写中放置任何内容,但是该方法具有作用,我的意思是!!

就代码而言,这是AutoClosable接口

包java.lang;

public interface AutoCloseable {

    void close() throws Exception;
}

当我实现它时,我会执行以下操作

@Override
    public void close() throws Exception {

    }

然后在另一个类中,我可以在资源的try catch中使用此close方法,因为

try(SecurityController security = new SecurityController()) {

} catch (Exception ex) {

} 

因此,即使接口或实现中没有单个代码,我也可以关闭对象

这里的更多内容是Initializable接口的代码

public interface Initializable {

    public void initialize(URL location, ResourceBundle resources);
}

当我实现它时,我将执行以下操作:

@Override
public void initialize(URL url, ResourceBundle rb) {     

}

当我运行JavaFx应用程序时,即使该方法在我的类和接口中均为空,该方法也将初始化我的控件,并且在该方法执行完之前我无法在控件上工作,因为这是初始化控件的原因,但是如何它在空的时候不这样做吗?!

如果有人可以向我解释一下,我将不胜感激,因为这确实让我非常困惑

顾名思义,当您实现一个接口时,您的类的实例将具有执行该接口指定的功能的能力。

AutoClosable具有close方法。 无论您在方法实现中实际编写什么内容,都始终可以在AutoClosable实例上调用close 但是它的实际作用取决于您的实现。

所以是的,用空的方法体实现AutoClosable (或任何其他接口)确实会产生效果-即变得能够调用close ,并能够在try with resources语句中使用它。 请注意,这只是一种调用方法能力 这是否意味着您的对象实际上关闭了应该关闭的对象? 不,因为这取决于您的实现。

暂无
暂无

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

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