XmlObject.javaАннотация уровня класса — маркер того что класс может быть сериализован/десериализован фреймворком XmlStream. 44 строки. Это аналог JAXB's @XmlRootElement и XStream's неявного соглашения. В отличие от них, XmlStream требует явной аннотации — класс без @XmlObject не будет обработан ни XmlObjectReader ни XmlObjectWriter. Это сделано для безопасности: только явно разрешённые классы участвуют в сериализации.
alias()Переопределяет имя корневого XML-элемента. По умолчанию (пустая строка) используется полное квалифицированное имя класса. С алиасом: @XmlObject(alias="user") → <user>. Алиасы регистрируются в AliasMap (#758).
Разница с @XmlField(alias): @XmlObject.alias задаёт имя корневого элемента, а @XmlField.alias — имя дочернего элемента или атрибута.
XmlRegistry при старте приложения сканирует classpath и находит все классы с @XmlObjectAliasMap: Class → alias и alias → ClassXmlObjectReader.newInstance() при встрече XML-элемента ищет класс через AliasMap.getClassForAlias(tagName)BeanHelper.newInstance()Status.IGNORE (#760)Ключевое отличие: @XmlObject — это не просто алиас, это явное разрешение на сериализацию. Класс без @XmlObject вообще не участвует в процессе. XStream по умолчанию сериализует любой класс — риск утечки данных.
868d6abb7 2025 → 2026 63081666f Source file headers: 2024→2025 b6092df09 Copyright 2023 → 2024 ab45d51fa Copyright 2001-2022 → 2001-2023 5f7ef41b8 Copyright 2021 → 2022 cd27dd997 package xstream → xmlstream ceb63e8a1 Source code header: (C) 2001-2021 7c79f1922 Copyright of source header → 2020 32f634b88 Optimize imports dd5ca38ac CopyRight of all java file-header updated or created 9ebb88522 Initial commit
Аннотация с одним атрибутом (alias) не менялась с момента создания. Это ворота разрешения, а не поверхность конфигурации.