跳到主要内容

JEP 256:BeanInfo 注释

概括

用适当的注释替换@beaninfoJavadoc 标记,并在运行时处理这些注释以BeanInfo动态生成类。

动机

简化自定义类的创建BeanInfo并实现客户端库的模块化。

描述

大多数BeanInfo类是在运行时自动生成的,但许多 Swing 类仍然在编译时BeanInfo从 Javadoc 标记生成类。我们建议用以下注释@beaninfo替换标签,并扩展现有的内省算法来解释它们:@beaninfo

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 "";
}

有关更多详细信息,请参阅JavaBeanBeanPropertySwingContainer的 Javadoc 。

BeanInfo这些注释将在运行时生成期间设置相应的特征属性。开发人员可以更轻松地在 Bean 类中直接指定这些属性,而不是BeanInfo为每个 Bean 类创建单独的类。它还将允许删除自动生成的类,这将使客户端库的模块化变得更加容易。

测试

我们需要验证新的内省算法是否按预期运行。我们还需要验证新的内省算法不会破坏向后兼容性,或者确保很少出现破坏兼容性的情况。

风险和假设

  • 新的内省算法的行为可能会有所不同,但我们预计不会出现任何严重的向后不兼容性。

  • 我们预计不会出现任何性能下降。重构内省算法可能会提高性能。