JEP 256: BeanInfo Annotations提供JavaBean
和BeanProperty
批注。尽管没有太多的文档,但我一直希望这可以允许我们使用注释将类上的字段指定为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。
最佳答案
javadoc说BeanProperty
是@Target(METHOD)
。看起来这是一种自定义PropertyDescriptor
的方法,而无需创建BeanInfo
实现。我认为它不是要像Lombok那样工作。 (感谢谢天谢地,出于所有原因,请参见Why use getters and setters?,显式方法是个好主意。)