Java接口启动/停止是否已存在?

Java接口启动/停止是否已存在?,java,interface,Java,Interface,是否与本合同有接口 start(); stop(); 已经存在 我的印象是在这里重新编写了一些经典的东西…我不这么认为,但我想说,即使是这样,编写自己的代码也会更方便,以防将来需要修改它并添加一个pause()或类似内容。不,至少不包括其他软件包,但创建一个软件包非常容易: public interface StartAndStoppable { //I am *terrible* at coming up with names :P public void start();

是否与本合同有接口

start();
stop();
已经存在


我的印象是在这里重新编写了一些经典的东西…

我不这么认为,但我想说,即使是这样,编写自己的代码也会更方便,以防将来需要修改它并添加一个
pause()或类似内容。

不,至少不包括其他软件包,但创建一个软件包非常容易:

public interface StartAndStoppable { //I am *terrible* at coming up with names :P
    public void start();
    public void stop();
}

这很好,因为如果以后需要,您还可以添加新方法。

我从来没有听说过标准Java类之间有这样的接口


但是,与您正在寻找的内容相去甚远的可能是class
java.util.concurrent.FutureTask
,方法是
run()
cancel(boolean)
,如果干净的命名没有要求使用标准java那么重要,那么:

  • java.lang.Runnable.run()作为start()
  • java.io.Closeable.close()作为stop()
“io”包可能会让人困惑,但在启动/停止嵌入式web服务器时听起来还可以。
不发明自己的接口的原因可能是完全的模块解耦,而不引入第三个模块(只包含新发明的接口)。

接口通常非常轻。拥有自己的方法没有实际问题,这意味着您可以轻松地更改它。您想使用它做什么?根据您的要求,您可能需要调用方法
open
close
,并实现
Autocloseable
以允许使用try with resources(显然不一定适用于您的用例)@assylias值得注意的是,
AutoClosable
以及
try with resources
仅在Java 7中提供。我不确定在完全无关的应用程序中导入org.springframework接口是否是一个好主意。@dystroy如果应用程序使用springframework,那么它是最合适的接口。如果我还没用,那它应该用了。我已经有这个包了,所以现在它非常适合我。也许稍后我会创建我的接口,如果它与生命周期不同,但现在它是完美的。如果您的用例不是bean上下文生命周期,那么您只是在把代码弄得一团糟。您还以一种全新的方式将代码绑定到Spring。是的,但是如果
run
close
来自不同的接口,则不能将它们作为包含这两种方法的单一类型进行传递,除非将引用传递到实现类本身,这样会忽略整个要点。对。对不起,我没想到这会是个问题(因为我一次只需要一个方法)。不过,您可以将两个接口都作为一个参数接受:
public void manage(T component)抛出IOException{component.run();component.close();}
这实际上是一个很好的主意,可以创建一个扩展这两个接口。作为对这个想法的一个轻微调整(如果您使用的是JDK 7或更高版本),您可以扩展而不是消除围绕“io”包和异常的混淆。