JEP 256: BeanInfo Annotations | BeanInfo 注解
摘要
将 @beaninfo
Javadoc 标签替换为适当的注解,并在运行时处理这些注解以动态生成 BeanInfo
类。
动机
简化自定义 BeanInfo
类的创建,并实现客户端库的模块化。
描述
大多数 BeanInfo
类是在运行时自动生成的,但是许多 Swing 类仍然会在编译时从 @beaninfo
Javadoc 标签生成 BeanInfo
类。我们建议将 @beaninfo
标签替换为以下注解,并扩展现有的内省算法来解释它们:
java
package java.beans;
public @interface JavaBean {
String description() default "";
String defaultProperty() default "";
String defaultEventSet() default "";
}
package java.beans;
public @interface BeanProperty {
boolean bound() default true;
boolean expert() default false;
boolean hidden() default false;
boolean preferred() default false;
boolean visualUpdate() default false;
String description() default "";
String[] enumerationValues() default {};
}
package javax.swing;
public @interface SwingContainer {
boolean value() default true;
String delegate() default "";
}
更多详细信息,请参阅 JavaBean、BeanProperty 和 SwingContainer 的 Javadoc。
这些注解将在运行时生成 BeanInfo
时设置相应的特性属性。开发人员可以直接在 Bean 类中指定这些属性,而不必为每个 Bean 类创建单独的 BeanInfo
类。它还允许删除自动生成的类,从而更容易实现客户端库的模块化。
测试
我们需要验证新的内省算法是否按预期工作。我们还需要验证新的内省算法是否不会破坏向后兼容性,或者确保破坏兼容性的情况很少。
风险和假设
新的内省算法可能会有一些不同的行为,但我们不认为会有任何严重的向后不兼容性。
我们不期望出现任何性能下降。内省算法的重构可能会改善性能。