什麼是Java Bean

來源:互聯網
上載者:User

標籤:com   gets   修改   升級   程式   一個   new   highlight   class   

剛才看java中的註解,老是說註解引入的是個java Bean,那我就要問了,什麼是Java Bean?

知乎引用:https://www.zhihu.com/question/19773379下楊博的答案

Java語言欠缺屬性、事件、多重繼承功能。所以,如果要在Java程式中實現一些物件導向編程的常見需求,只能手寫大量膠水代碼。Java Bean正是編寫這套膠水代碼的慣用模式或約定。這些約定包括getXxx、setXxx、isXxx、addXxxListener、XxxEvent等。遵守上述約定的類可以用於若干工具或庫。

舉個例子,假如有人要用Java實現一個單向鏈表類,可能會這樣寫:

// 編譯成 java-int-list_1.0.jarpublic final class JavaIntList {  static class Node {    public Node next;    public int value;  }  public Node head;  public int size;}

上述實現為了能夠快速擷取鏈表的大小,把鏈表大小緩衝在size變數中。用法如下:

JavaIntList myList = new JavaIntList();System.out.println(myList.size);

JavaIntList的作者很滿意,於是開源了java-int-list庫的1.0版。檔案名稱是java-int-list_1.0.jar。發布後,吸引了許多使用者來使用java-int-list_1.0.jar。
有一天,作者決定要節省記憶體,不要緩衝size變數了,把代碼改成這樣:

// 編譯成 java-int-list_2.0.jarpublic final class JavaIntList {  static final class Node {    public Node next;    public int value;  }  public Node head;  public int getSize() {    Node n = head;    int i = 0;    while (n != null) {      n = n.next;      i++;    }    return i;  }}

然後發布了2.0版:java-int-list_2.0.jar。發布後,原有java-int-list_1.0.jar的使用者紛紛升級版本到2.0。這些使用者一升級,就發現自己的程式全部壞掉了,說是找不到什麼size變數。於是這些使用者就把作者暴打一頓,再也不敢用java-int-list庫了。

這個故事告訴我們,如果不想被暴打致死,你就必須保持向後相容性。太陽公司在設計Java語言時,也懂得這個道理。所以Java標準庫中,絕對不會出現public int size這樣的代碼,而一定會一開始就寫成:

private int size;public int getSize() { return size; }

讓使用者一開始就使用getSize,以便有朝一日修改getSize實現時,不破壞向後相容性。這種public int getSize() { return size; }的慣用手法,就是Java Bean。

什麼是Java Bean

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.