Java拾遗(Bean)

Java bean properties

Simple
    一个简单属性表示一个伴随有get/set的变量
 
Indexed
    一个Indexed属性表示一个数组值,使用与该属性对应的get/set方法可取的数组中的数值。该属性也可以一次设置或取得整个数组的值

Bound
    一个Bound属性是指当该属性的值发生变化是,要通知其他的对象。每次属性值变化时,这个属性就触发(fire)一个PropertyChange事件(封装了属性名,属性的原值,属性的新值),事件传递到其他的Bean,后续处理有其自己定义。(相关类PropertyChangeSupport类)
 
Constrained
    一个Constrained属性指当此属性的值发生变化时,与这个属性已经建立了某种连接的其他Java对象可否决定属性值的变化。Constrained属性的监听者通过抛出PropertyVetoException来阻止该属性的变化。(相关类VetoableChangeSupport类)

Java bean event

事件处理是JavaBean体系结构的核心之一。
通过事件处理机制,可让一些组件作为事件源,发出可被描述环境或其它组件接收的事件。这样,不同的组件就可在构造工具内组合在一起,组件之间通过事件的传递进行通信,构成一个应用。从概念上讲,事件是一种在"源对象"和"监听者对象"之间,某种状态发生变化的传递机制。

Customizer

customizer 类提供一个用来自定义目标 Java Bean 的完全自定义 GUI。 
每个 customizer 都应该从 java.awt.Component 类继承,因此它们可以在 AWT 对话框或面板中被实例化。 
每个 customizer 都应该有一个 null 构造方法。 
 
方法
Void addPropertyChangeListener(PropertyChangeListener listener)
Void removePrepertyChangeListener(PropertyChangelistener listener)

属性
Void setObject(object bean)

PropertyEditor

PropertyEditor 类为希望允许用户编辑某个给定类型的属性值的 GUI 提供支持。 
PropertyEditor 支持各种不同类型的显示和更新属性值的方式。大多数 PropertyEditor 只需要支持此 API 中可用的不同选项的一个子集。 
简单的 PropertyEditor 可能只支持 getAsText 和 setAsText 方法,不需要支持(比如说)paintValue 或 getCustomEditor。更多复杂类型的 PropertyEditor 可能无法支持 getAsText 和 setAsText,但它们将改为支持 paintValue 和 getCustomEditor。 
每个 propertyEditor 都必须支持三种简单显示样式之一或更多。
这样便可以:
(1) 支持 isPaintable;
(2) 从 getTags() 返回一个非 null 的 String[],以及从 getAsText 返回一个非 null 值;
(3) 只从 getAsText() 返回一个非 null 的 String。 
当此类是参数对象类型相对应的 propertyEditor 时,每个属性编辑器都必须支持调用 setValue。此外,每个属性编辑器都必须支持一个自定义编辑器,或者支持 setAsText。 
每个 PropertyEditor 都应该有一个 null 构造方法。 
 
方法
Void addPropertyChangeListener(PropertyChangeListener listener)
Void removePrepertyChangeListener(PropertyChangelistener listener)
Void  paintValue(Graphic gfs,Rectangle box)
boolean supportsCustomEditor()
属性
较多,参考doc

Beans

public static Object instantiate(ClassLoader cls, String beanName) throws IOException, ClassNotFoundException
public static Object instantiate(ClassLoader cls, String beanName, BeanContext beanContext) throws IOException, ClassNotFoundException
public static Object instantiate(ClassLoader cls, String beanName, BeanContext beanContext, AppletInitializer initializer) throws IOException, ClassNotFoundException

这个方法可以反序列化java对象,会从指定位置找.ser文件,没找到就新序列化一个,并返回对象实例。
Object obj = Beans.instantiate(getClass().getClassLoader(), "test");
不过不是分布式要求的情况下,不要使用这个方法。每次调用 Beans.instantiate 方法时,都对文件系统进行检查以获取 bean 的序列化版本。通常,在您 Web 请求的关键路径中此类磁盘活动的开销很大。
 
对第三个方法,首先试着将 beanName 作为序列化的对象名称对待,然后将它作为类名称对待。
在将 beanName 用作序列化对象名称时,要将给定的 beanName 转换为资源路径名,并添加后缀 ".ser"。然后试着从该资源加载序列化对象。
例如,给定一个 beanName "x.y",Beans.instantiate 首先将试着从资源 "x/y.ser" 中读取一个序列化对象,如果失败,它会试着加载类 "x.y" 并创建该类的一个实例。

Others

Interface
    AppletInitializer 
    BeanInfo 
    Customizer 
    DesignMode 
    ExceptionListener 
    PropertyChangeListener 
    PropertyEditor 
    VetoableChangeListener 
    Visibility 
Class
    ConstructorProperties 
    BeanDescriptor 
    Beans 
    DefaultPersistenceDelegate 
    Encoder 
    EventHandler 
    EventSetDescriptor 
    Expression 
    FeatureDescriptor 
    IndexedPropertyChangeEvent
    IndexedPropertyDescriptor 
    Introspector 
    MethodDescriptor 
    ParameterDescriptor 
    PersistenceDelegate 
    PropertyChangeEvent 
    PropertyChangeListenerProxy 
    PropertyChangeSupport 
    PropertyDescriptor 
    PropertyEditorManager 
    PropertyEditorSupport 
    SimpleBeanInfo 
    Statement 
    VetoableChangeListenerProxy 
    VetoableChangeSupport 
    XMLDecoder 
    XMLEncoder
标注
    ConstructorProperties
    @Documented
    @Target(value=java.lang.annotation.ElementType.CONSTRUCTOR)
    @Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME)

 

转载于:https://my.oschina.net/igooglezm/blog/635789

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值