2012-01-23 6 views
4

Это может быть немного бессмысленный вопрос, но при просмотре источников различных классов JDK я увидел, что когда класс реализовал интерфейс java.io.Serializable, он обычно ссылался на него с полным именем, не используя импорт, например:Почему Serializable объявлен с полным именем в классах JDK?

public class ArrayList<E> extends AbstractList<E> 
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable 

Есть ли какие-либо конкретные причины для этого? Имеет ли это какое-либо отношение к существованию устаревшего класса sunw.io.Serializable из старого JDK 1.0?

+1

Я верю, что вы правы с «sunw.io.Serializable», авторы хотели дать понять, что они означают «java.io.Serializable». Например, «Cloneable» не имеет одинакового имени в JDK, поэтому было бы бессмысленно. –

+3

Задать вопрос автору этого кода. Использование полного имени для Serializable (по моему опыту) - это не нормальная вещь. –

+2

@Steve Kuo: Вы говорите, что я должен написать электронное письмо Джошу Блоху? :) – Natix

ответ

-2

Обычно считается плохой формой, чтобы просто импортировать все волей-неволей. Использование полных имен типов (в том числе для java.io.Serializable и исключений), уменьшает потребность в импорте и проверяет, откуда взялись эти типы.

+4

Можете ли вы дать какие-либо аргументы или примеры, если кто-либо не будет импортировать все, особенно хорошо известные классы JDK? Только случаи, которые возникают у меня в голове, где это имеет смысл, - это такие классы, как java.sql.Date, где нужно явно избегать путаницы со стандартным 'java.util.Date'. (Я не упоминаю статический импорт, на самом деле они могут вызвать некоторую путаницу при неправильном использовании.) – Natix

Смежные вопросы