Beans 屬性對應類中的變量,按作用分四類:
單一值,配套一對 get/set 方法。命名規約:getX/setX 對應屬性 X;isX 對應 boolean 屬性。
public class Alden1 extends Canvas {
String ourString = "Hello";
public void setString(String newString) { ourString = newString; }
public String getString() { return ourString; }
}
數組值,提供整體及單元素 get/set:
public class Alden2 extends Canvas {
int[] dataSet = {1,2,3,4,5,6};
public void setDataSet(int[] x) { dataSet = x; }
public void setDataSet(int index, int x) { dataSet[index] = x; }
public int[] getDataSet() { return dataSet; }
public int getDataSet(int x) { return dataSet[x]; }
}
值變化時觸發 PropertyChangeEvent 通知監聽者。需維護監聽器列表:
public class Alden3 extends Canvas {
String ourString = "Hello";
private PropertyChangeSupport changes = new PropertyChangeSupport(this);
public void setString(String newString) {
String oldString = ourString;
ourString = newString;
changes.firePropertyChange("ourString", oldString, newString);
}
public void addPropertyChangeListener(PropertyChangeListener l) {
changes.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
changes.removePropertyChangeListener(l);
}
}
構建工具通過 add/remove 方法註冊監聽器,實現屬性聯動(如按鈕背景色變更同步對話框背景)。
值變化前觸發 VetoableChangeEvent,監聽者可拒絕變更(拋出 PropertyVetoException)。
ourString)get + 首字母大寫(getOurString)set + 首字母大寫(setOurString)is 前綴(isEnabled)getX(int)/setX(int, T) 及 getX()/setX(T[])統一命名規約使構建工具能自動透視分析 Bean 結構,生成屬性表、事件表,同時便於程序員閱讀理解代碼。