Почему java.io.Serializable не был объявлен устаревшим в Java 5?

В версиях до Java 5 не было аннотаций. В результате вы не могли добавлять метаданные в класс.

1228] Чтобы пометить класс как сериализуемый, вам нужно было реализовать интерфейс Serializable (это просто маркер) и использовать дополнительные ключевые слова transient , чтобы пометить поле как несериализуемое, если необходимо, что-то вроде:

public class MyClass implements Serializable {
   ...
   private transient Bla field;
   ...
}

Теперь вы теоретически можете использовать аннотации (это идеальное применение для них) и иметь:

@Serializable
public class MyClass {
   ...
   @Transient
   private Bla field;
   ...
}

Но интерфейс и ключевое слово не были устаревшими, и в Java 5 не было добавлено никаких аннотаций для замены их.

Каковы соображения для этого решения сохранить интерфейс и ключевое слово?

Конечно, существует проблема совместимости с кодом до Java 5, но в какой-то момент это закончится (например, в связи с новым функции дженериков, JLS указывает, что Возможно, что будущие версии Java p язык программирования запрещает использование необработанных типов ). Так почему бы не подготовить почву для сериализованных аннотаций?

Есть мысли? (хотя я бы предпочел конкретные ссылки: D, который я не смог найти)

22
задан Nathan Hughes 17 June 2011 в 20:49
поделиться