JEP 256: BeanInfo Annotations提供JavaBeanBeanProperty批注。尽管没有太多的文档,但我一直希望这可以允许我们使用注释将类上的字段指定为JavaBean样式的属性,而不必创建样板getter/setter accessor/mutator methods

所以这:

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 ;

}


但是,当我在IntelliJ 2017.2.2的Java 9项目中尝试此操作时,在IDE上出现“ @”注释时出错,提示:


  '@BeanProperty'不适用于字段


编译器报告错误:


  错误:(8,5)java:注释类型不适用于这种声明


➠我是否误解了这些新注释的目的?还是我有一些语法问题?

除了上面链接的JEP和JavaDoc外,我没有找到任何其他文档。

我正在试验Java 9的最新候选版本,目前是macOS Sierra 10.12.6上的Java 9 + 181。

最佳答案

javadocBeanProperty@Target(METHOD)。看起来这是一种自定义PropertyDescriptor的方法,而无需创建BeanInfo实现。我认为它不是要像Lombok那样工作。 (感谢谢天谢地,出于所有原因,请参见Why use getters and setters?,显式方法是个好主意。)

10-01 08:17