Подтвердить что ты не робот

Почему java.util.concurrent.RunnableFuture имеет метод run()?

Когда я проходил через JDK 7, я обнаружил, что java.util.concurrent.RunnableFuture<V> имеет метод запуска. Интересно, какое значение дублирует одну и ту же подпись метода запуска в интерфейсе, когда он уже расширяет 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();
}  
4b9b3361

Ответ 1

Он определен в интерфейсе, чтобы он мог привязать к нему RunnableFuture -специфический JavaDoc. Там нет технического значения.

Ответ 2

Нет документов, которые предоставляют такое объяснение. Поэтому я хочу высказать свое мнение.

Я не думаю, что это имеет какое-то важное значение. Представьте, как выглядит интерфейс интерфейса.

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

Несмотря на то, что это совершенно верно, он явно не указывает на его цель. Поэтому, на мой взгляд, это просто было предоставлено для легкого понимания метода run(), характерного для интерфейса RunnableFuture. Так что вы знаете, чтобы поместить свою управляемую логику, переопределив метод run().

Другим моментом, о котором я могу думать, является Runnable является одним из ранних интерфейсов, и если вы видите метод run(), он

public abstract void run();

и public и abstract ключевые слова являются избыточными, поскольку по умолчанию в интерфейсе используются методы public и abstract. Для импровизации это может быть одной из причин.