Являются ли аннотации Java сериализуемыми? - программирование
Подтвердить что ты не робот

Являются ли аннотации Java сериализуемыми?

Java Интерфейс аннотации не распространяется Serializable. Однако значения аннотации Java являются сериализуемыми (реализованы с использованием java.lang.reflect.Proxy с сериализуемым обработчиком вызовов).

Насколько это гарантировано? Мой поиск-foo не находит ссылку. Или, если мне нужно безопасно сериализовать экземпляры аннотаций, нужно ли создавать собственные прокси-серверы сериализации?

4b9b3361

Ответ 1

Объекты аннотаций, возвращаемые методами java.lang.reflect.AnnotatedElement, являются Serializable. Это то, что API говорит: этот интерфейс позволяет читать комментарии в комментариях. Все аннотации, возвращаемые методами в этом интерфейсе, являются неизменяемыми и сериализуемыми.

Все классы, способные возвращать объекты аннотаций (Class, Constructor, Field, Method, Package, Parameter), реализуют AnnotatedElement и обязаны создавать/возвращать Serializable объекты по вышеуказанному контракту.

Ответ 2

Аннотации являются частью определения класса и поэтому никогда не будут записываться в поток сериализации (по крайней мере, не со стандартной сериализацией Java) при сериализации экземпляра класса с аннотациями.

UPDATE: Наверное, я пропустил исходный вопрос, который имел в виду сериализацию экземпляра фактической аннотации.