Как использовать новые аннотации BeanInfo в Java 9
JEP 256: BeanInfo Annotations обеспечивает JavaBean
а также BeanProperty
аннотаций. Хотя документации не так много, я надеялся, что это позволит нам использовать аннотации для обозначения полей класса как свойств в стиле JavaBean без необходимости создания шаблонных методов доступа / мутатора getter/ setter accessor/ mutator.
Итак, это:
public class Person {
private String name ;
public String getName( ) {
return this.name ;
}
public void setName( String nameArg ) {
this.name = nameArg ;
}
}
... станет этим:
import java.beans.BeanProperty;
public class Person {
@BeanProperty
public String name ;
}
Тем не менее, когда я пытаюсь сделать это в проекте Java 9 в IntelliJ 2017.2.2, я получаю сообщение об ошибке в среде IDE с аннотацией "@", говорящей:
"@BeanProperty" не относится к полю
Компилятор сообщает об ошибке:
Ошибка:(8, 5) java: тип аннотации не применим к этому виду объявления
➠ Я неправильно понял цель этих новых аннотаций? Или у меня есть некоторые проблемы с синтаксисом?
Я не нашел никакой документации, кроме JEP и JavaDoc, связанных выше.
Я экспериментирую с недавними версиями-кандидатами для Java 9, в настоящее время Java 9+181 на macOS Sierra 10.12.6.
1 ответ
Javadoc говорит BeanProperty
является @Target(METHOD)
, Похоже, это способ настроить PropertyDescriptor
без необходимости создавать BeanInfo
реализация. Я не думаю, что он должен был работать как Ломбок. (И слава Богу, см. Зачем использовать геттеры и сеттеры? По всем причинам явные методы - хорошая идея.)