gpt4 book ai didi

java - 没有主体的接口(interface) stub 方法如何产生效果?

转载 作者:行者123 更新时间:2023-12-02 10:27:47 25 4
gpt4 key购买 nike

你好,我正在学习Java,有一个问题让我困惑,有些接口(interface)当我们实现它们并重写它们的空方法时,即使我们在调用方法时在重写中不放置任何内容,它也会产生效果。

一些让我困惑的具体例子如下,

  • 实现 AutoCloseable 接口(interface)并重写其 close() 方法,将允许我们关闭一个对象,

  • Initialized接口(interface)相同,如果为JavaFx应用程序重写它,这将初始化我们的控件,在这两种情况下,我们在重写中都没有放置任何内容,但该方法有一个操作,我的意思是如何?!

在代码方面这是自动关闭接口(interface)

包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) {

}

因此,即使界面或我的实现中没有任何代码,我也能够关闭该对象

这里是Initialized接口(interface)的代码

public interface Initializable {

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

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

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

}

当我运行 JavaFx 应用程序时,此方法将初始化我的控件,即使该方法在我的类和接口(interface)中都是空的,并且在该方法完成执行之前我无法处理控件,因为它是初始化我的控件的,但是当它是空的时它是如何做到这一点的我不明白?!

如果有人能向我解释这一点,我将不胜感激,因为这真的让我很困惑

最佳答案

根据定义,当您实现接口(interface)时,类的实例将能够执行该接口(interface)指定的任何操作。

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

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

关于java - 没有主体的接口(interface) stub 方法如何产生效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53798673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com