Java bean 概念
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 的属性。
举个例子,假如有人要用Java实现一个单向链表类,可能会这样写:
public final class JavaIntList {
static class Node {
public Node next;
public int value;
}
public Node head;
public int size; //保存List大小
}
上述实现为了能够快速获取链表的大小,把链表大小缓存在size变量中。用法如下:
JavaIntList myList = new JavaIntList();
System.out.println(myList.size);
有一天,决定要节省内存,不要缓存size变量了,把代码改成这样:
public final class JavaIntList {
static final class Node {
public Node next;
public int value;
}
public Node head;
public int getSize() { //外部获取List的size方法,采取函数计算
Node n = head;
int i = 0;
while (n != null) {
n = n.next;
i++;
}
return i;
}
}
上述不是通过每个List保存一个int size,而是每次获取的时候,再进行getSize()计算。
我们知道更新版本,必须保持向后兼容性。sun在设计Java语言时,也懂得这个道理。所以Java标准库中,绝对不会出现public int size这样的代码,而一定会一开始就写成:
private int size;
public getSize(){
return size;
}
让用户一开始就使用getSize,以便有朝一日修改getSize实现时,不破坏向后兼容性。这种public int getSize() { return size; }的惯用手法,就是Java Bean。
通俗来说java Bean遵循这一的一套规范:
- 所有属性均为 private
- 提供默认的构造方法
- getter,setter来获取 private 成员变量
- 实现 serializable 接口