惯例跳过GUI部分,回头有空应该看一下第7章,讲了不少绘图的东西,可能还有点用。
第8章主要是JavaBean。
1、JavaBean的官方定义:一个Bean就是一个可重用的软件构建,并且能够在开发工具中可视化地操作(如NetBeans)。我凹凸了,原来JavaBean的初衷是为了方便GUI的可视化编程开发。。
2、其实也很好理解,就是希望一个JavaBean可以像VB那样具有不同的属性,可以直接在IDE上点点就可以完成对它的配置,而不需要swing那样整屏整屏的刷代码。
3、对于JavaBean来说,并没有一个通用的“父类”可以拿来继承。开发工具不会根据某个类的父类来“了解”JavaBean,而是根据精巧的命名,因此,JavaBean的命名必须支持某种规范。
4、模式比较简单:
public type getPropertyName(); public void setPropertyName(Type newValue);
如上所述,PropertyName是一个整体,用陀峰命名法(如果含2个或更多单词)。
而对于type是boolean类型的,是一个特例,他们采用如下的命名规则:
public boolean isPropertyName(); public void setPropertyName(boolean b);
5、上面说过了PropertyName要用驼峰标示法玛,例如filename,应该写为setFileName()。如果开头两个字母都是大写,如URL,那么就setURL吧,不要写setUrl。
6、由于上述规则具有一定技巧性,请一定注意不要和父类、接口继承的函数重名,否则可能会带来其他难以发现的Bug。
7、为了方便GUI(awt事件),还将检查结尾为Event的,IDE将认为此处可以拓展添加事件。
8、JavaBean的数据还可以返回数组(供索引下标):
// 直接返回、设置数组 Type[] getPropertyName(); void setPropertyName(Type [] newValue); // 返回某一个 Type getPropertyName(int i); void setPropertyName(int i, Type newValue);
但注意:上述方法不能扩充数组!即i必须小于内部属性的length。
9、还可以对JavaBean设置属性变化的通知事件。
10、跳过大段和GUI相关的……
11、JavaBean的持久化是指:用JavaBean的属性保存Bean内状态。在之后某个时刻,或者在另一个虚拟机中再将他们读取出来。
12、XMLEncoder可以完成将对象->流->XML文件的转化:
(java.beans.XMLDecoder / java.beans.XMLEncoder)
// 序列化 XMLEncoder out = new XMLEncoder(new FileOutputSteram(...)); out.writeObject(xxbean); out.close(); // 反序列化 XMLDecoder in = new XMLDecoder(new FileInputStream(...)); XXXBean bean = in.readObject(); in.close();
13、上述XMLDecoder/XMLEncoder内置支持了如下数据类型:
null、所有基本数据类型及包装类、枚举、String、数组、集合、映射、AWT的很多类。
14、如果要实现自己的输出、解析包装,可以继承java.beans.PersistenceDelegate,需要覆盖如下函数:
protected abstract Expression instantiate(Object oldInstance, Encoder out)
15、JavaBean适于存储的是:
长期存储、小且快、易于生成、易于人工编辑、是标准Java的一部分。
本章GUI涉及过多。。跳过了很多。。