java.beans 分析
来源:互联网 发布:淘宝客服外包 编辑:程序博客网 时间:2024/06/06 12:45
JavaBeans让使用组件更加容易,软件开发者可以使用其他人开发的组件,而不必关心其可预测的内部行为。
JavaBean对于刚刚接触的人很容易上手,但是深究起来也是蛮复杂的,
如流化与重建、持久化为XML文件、为定制类型创建编辑器组件等。
https://docs.oracle.com/javase/tutorial/javabeans/
满足下面编程习惯的JAVA类,都是JavaBean:
1 所有的属性都是私有的,公有的getter和setter;
2 必须有一个无参的公有构造函数(无参创建,保证创建与配置的灵活性);
3 实现序列化接口( java.io.Serializable,是一个语义识别接口,其中没有任何方法、域、服务。
只表明该实现类有转化实例到字节流的能力 ,并能通过网络进行传输、或是存储在文件中等。
虚拟机可以根据字节流中的信息,在任何地方,重建被流化的对象实例。
如果一个类实现了序列化接口,那么它的类属性必须是简单类型、可序列化的对象、或是transient类型。
bean的这种 流化-传输-重构的特性,赋予了JAVA企业应用无限的可能性)。
JavaBean的属性、域、状态信息都可被流化,可以定制那些成员被流化,有3种流化控制方式:
3.1 实现Serializable接口进行自动流化,使用JAVA对象序列化工具或是说序列化软件对所有的non-static, non-transient域自动的进行流化。
3.2通过实现writeObject 或是 readObject,实现自动流化无法处理的更加复杂的对象如何被流化,也可以添加非成员数据进行流化。
3.2 实现接口Externalizable进行定制文件格式的序列化,可以完全控制流化。
使用private staticfinal ObjectStreamField[]属性,
1class PropertyChangeSupport implements Serializable
监听器集合列表被它管理。在订阅属性改变时,它们会被通知。
它是线程安全的,有3个主要的功能:订阅监听器、取消订阅、发布消息。
因为监听器直接不是线程安全的,所以调用者在发布属性改变事件时,需要注意线程安全问题。
1.1属性分析
private staticfinal ObjectStreamField[]serialPersistentFields指定需要流化的属性及其顺序。
privatetransient Object sourceBean;事件源,监听器监听该源的一个或多个属性是否改变。
private transient List<PropertyChangeListener>listeners监听器列表。对于其中的任何一个监听器,
在源的被订阅属性改变时,它将被通知。
1.2 通用函数
public PropertyChangeSupport(Object sourceBean)构造函数
private boolean equals(String aName, EventListener a, EventListener b)
private void writeObject(ObjectOutputStream out)throwsIOException 非默认序列化函数
private void readObject(ObjectInputStream in)throws IOException,ClassNotFoundException 非默认序列化函数
1.3监听器管理 :在任何参数为null或是没有订阅该属性时,没有任何影响
public void removePropertyChangeListener(String propertyName, PropertyChangeListenerlistener)
public void removePropertyChangeListener(PropertyChangeListener listener)移除该监听器对源的所有属性的监听
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
public void addPropertyChangeListener(PropertyChangeListener listener)
public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
public PropertyChangeListener[] getPropertyChangeListeners()
public boolean hasListeners(String propertyName)
1.4事件触发 :构造函数的参数作为事件源,如果sourceBean的属性propertyName的旧值和新值都不等于null并且相等,则事件不会触发。
T= Object,boolean,int
public void firePropertyChange(String propertyName, T oldValue,T newValue)发起PropertyChangeEvent事件。
public void fireIndexedPropertyChange(String propertyName,int index,T oldValue, T newValue)发起IndexedPropertyChangeEvent事件
public void firePropertyChange(PropertyChangeEvent event)
- java.beans 分析
- java beans
- Java Beans
- Java Beans
- Java Beans
- Java Beans
- java beans
- Java Beans
- Java Beans
- Java Beans
- JAVA.BEANS 包
- 企业Java Beans
- 关于托管 Java Beans
- zoj 3714 Java Beans
- zju 3714 Java Beans
- ZOJ3714:Java Beans
- ZOJ 3714 Java Beans
- ZOJ 3714 Java Beans
- Android消息处理框架:Looper,Handler,MessageQueue ...
- JGroups 3.x 说明
- 《操作系统》——处理器管理
- Java实用经验总结--Swing篇
- 判断那台服务器访问----抓包问题
- java.beans 分析
- android:persistentDrawingCache用法说明
- PATCH Method of HTTP
- 关于我对ABA问题的理解
- [省选前题目整理][BZOJ 1038][ZJOI 2008]瞭望塔(半平面交)
- C#拾遗之结构和类
- python uiautomator 源码学习(三) josonRPCServer-DUT Side
- C# WinForm(窗体) 之间传值
- 蓝桥杯--dyx--李白打酒--dfs