18

当我浏览 JDK 7 时,我发现它java.util.concurrent.RunnableFuture<V>有一个 run 方法。我想知道在接口中复制相同的运行方法签名的意义是什么,当它已经扩展时Runnable

package java.util.concurrent;

public interface RunnableFuture<V> extends Runnable, Future<V> {
    /**
     * Sets this Future to the result of its computation
     * unless it has been cancelled.
     */
    void run();
}  
4

2 回答 2

25

它在接口中定义,以便他们可以将RunnableFuture-specific JavaDoc 附加到它。没有技术意义。

于 2014-08-02T07:43:27.453 回答
2

没有提供此类解释的文档。所以我将提供我的意见。

我不认为它有什么重大意义。想象一下界面世界的样子

public interface RunnableFuture<V> extends Runnable, Future<V> {
}

虽然它是完全有效的,但它并没有清楚地表明它的目的。所以在我看来,它只是为了便于理解run()特定于RunnableFuture接口的方法而提供的。这样您就知道通过覆盖run()方法来放置您的可运行逻辑。

我能想到的另一点是Runnable早期接口之一,如果您看到 run() 方法,它就是

public abstract void run();

publicabstract关键字是多余的,因为接口中的方法默认是 publicabstract。即兴发挥这可能是原因之一。

于 2014-08-02T07:45:21.743 回答