В pre Java 5 аннотаций не было. В результате вы не смогли добавить метаданные в класс.
Чтобы пометить класс как сериализуемый, вам нужно было реализовать интерфейс Serializable (это именно тот, маркер) и использовать дополнительные ключевые слова transient
для пометьте поле как несериализуемое, если необходимо, что-то вроде:
public class MyClass implements Serializable {
...
private transient Bla field;
...
}
Теперь вы можете теоретически использовать аннотации (для них это идеальное применение) и имеют:
@Serializable
public class MyClass {
...
@Transient
private Bla field;
...
}
Но интерфейс и ключевое слово не были устаревшими, и в Java 5 не было добавлено комментариев для их замены.
Каковы соображения для этого решения, чтобы сохранить интерфейс и ключевое слово?
Конечно, существует проблема совместимости с кодом pre Java 5, но в какой-то момент, который закончится (например, связанный с новыми функциями дженериков, JLS указывает, что Это возможно, что будущие версии языка программирования Java будут запрещать использование необработанных типов). Так почему бы и не подготовить путь для сериализованных аннотаций?
Любые мысли? (хотя я бы предпочел конкретные ссылки: D, которых я не смог найти)