Если использование переменной clock
зависит только от методов, которые предоставляет Thread
, то первая альтернатива лучше, так как она делает меньше предположений о конкретном объекте, на который она ссылается.
Если использование clock
основано на CountDownClock
-специфических методах, то, очевидно, последний вариант - ваш единственный вариант.
Основное правило заключается в том, чтобы при объявлении переменной всегда выбирать наиболее общий тип из возможных.
Та же причина относится к предпочтению
List<String> someList = new ArrayList<String>();
над
ArrayList<String> someList = new ArrayList<String>();
В чем разница и почему?
Если программа компилируется с любой из двух альтернатив, то технически нет никакой разницы вообще. Разница между ними больше связана с техническим обслуживанием. Смотри ниже.
Какие преимущества и гибкость это дает программисту?
Если clock
используется только как обычный Thread
, то выбор первого объявления упрощает его замену на другой класс потока в будущем. (Если он объявлен как Thread
, то вы можете быть уверены, что он будет скомпилирован нормально для любого другого Thread
класса, кроме CountDownClock
.)
Похожие вопросы: