Ответ 1
Он определен в интерфейсе, чтобы он мог привязать к нему RunnableFuture
-специфический JavaDoc. Там нет технического значения.
Когда я проходил через 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();
}
Он определен в интерфейсе, чтобы он мог привязать к нему RunnableFuture
-специфический JavaDoc. Там нет технического значения.
Нет документов, которые предоставляют такое объяснение. Поэтому я хочу высказать свое мнение.
Я не думаю, что это имеет какое-то важное значение. Представьте, как выглядит интерфейс интерфейса.
public interface RunnableFuture<V> extends Runnable, Future<V> {
}
Несмотря на то, что это совершенно верно, он явно не указывает на его цель. Поэтому, на мой взгляд, это просто было предоставлено для легкого понимания метода run()
, характерного для интерфейса RunnableFuture
. Так что вы знаете, чтобы поместить свою управляемую логику, переопределив метод run()
.
Другим моментом, о котором я могу думать, является Runnable
является одним из ранних интерфейсов, и если вы видите метод run(), он
public abstract void run();
и public
и abstract
ключевые слова являются избыточными, поскольку по умолчанию в интерфейсе используются методы public
и abstract
. Для импровизации это может быть одной из причин.