Как использовать новые аннотации 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 реализация. Я не думаю, что он должен был работать как Ломбок. (И слава Богу, см. Зачем использовать геттеры и сеттеры? По всем причинам явные методы - хорошая идея.)

Другие вопросы по тегам