2013-06-25 3 views
1

Я использую отражение, чтобы заполнить jaxb-объект данными из hashMap. Если @XmlElement имеет атрибут имени, я должен использовать его, если нет, я должен использовать имя поля.Проверьте, имеет ли атрибут @XmlElement атрибут имени

XmlElement anno = field.getAnnotation(XmlElement.class); 
String name = anno.name(); 

Я нашел, если имя атрибут не установлен вручную (например, используется простой @XmlElement аннотация), значение имени поле «## по умолчанию». Чтобы проверить, установлен ли атрибут, я использую этот код:

if(!"##default".equals(name)){ 

Но я не думаю, что это приемлемо. Как я могу сделать это лучше?

ответ

0

Значение "##default" (по умолчанию) в свойстве имени аннотации @XmlElement указывает на то, что имя элемента XML должно быть выведено из этого поля. Поэтому код у вас есть вполне допустимо:

if(!"##default".equals(name)){ 

Пользователь не может указать

@XmlElement(name="##default") 

Чтобы получить следующий XML:

<root> 
    <##default>Hello World</##default> 
</root> 

Javadoc Reference

+0

Вы имеете в виду, что нет лучшего способа? – rdo

+0

@rdo - По существу. Если вы смотрите аннотацию '@ XmlElement', то лучше всего использовать сравнение свойства' name' со значением '## default'. –