2012-08-06 119 views
17

在我開始之前,我只想讓大家知道我確實花了很多時間用google搜索,發現很多的解釋和定義。但即使如此,花費數小時閱讀該主題後,仍然顯得相當模糊。我知道我必須提出可以改善社區的問題,但這只是爲了讓我看看我是否對JavaBeans有清晰的認識。簡單英語中的JavaBeans是什麼?

從我可以做出來,一個JavaBean基本上是一類類似,只是它遵循某種約定任何其他的Java類,即:

  • 這個類必須實現可序列化
  • 類屬性假定是私人的,他們的名字以小寫字母開頭
  • 每個屬性都必須有它的各自的getter和setter方法。
  • 每個setter方法都以前綴「get」開始,後跟屬性名稱,例如的setName()
  • setter方法是公開的,無效
  • 同樣適用於getter方法(前綴「得到」,公衆,返回類型相應的屬性類的類型等)
  • 對於布爾屬性而不是「得」一使用前綴'is'
  • 嚴格地說,它是被認爲是'bean'而不是類本身的類的實例。

在你閱讀了很長時間之後,你就有了,這就是我所能做的......是嗎?我關門了嗎?我有這個完全錯誤的嗎?

...感謝大家的答案,這樣我就可以更新此項目列表:-)

+0

相關:http://stackoverflow.com/questions/1727603/places-where-javabeans-are-used – assylias 2012-08-06 13:46:41

+0

關於布爾屬性getter有一個錯誤:你寫'set'而不是'is'。 – Autar 2012-08-06 14:00:00

回答

11

一個JavaBean是一種標準。所有的Javabeans都具有以下3個品質:

1)該類實現Serializable
2)所有字段都有公共setter和getter來控制訪問。
3)公共無參數構造函數。

+6

我以爲可序列化是沒有必要的。 – assylias 2012-08-06 13:46:11

+3

http://stackoverflow.com/questions/3142181/have-java-beans-to-be-serializable – 2012-08-06 13:46:51

+0

我認爲這是必要的,以滿足標準;在實踐中可能不必在所有情況下都起作用。 – hvgotcodes 2012-08-06 13:50:09

4

是的,這就是它。

只是一對夫婦的額外位:

  • 吸氣劑沒有參數,和setter採取相同類型的單個參數作爲財產
  • 屬性可以是隻讀或只寫通過省略setter或getter分別
  • boolean干將使用前綴「是」

而且我認爲嚴格這是「豆」,而不是類的實例。

0

補充我們的同伴的答案:

  1. 添加監聽與addXXXListener方法。
  2. 與removeXXXListener方法刪除的監聽器。
  3. 布爾型(原語)字段應該具有isXXX方法代替getXXX方法。

因爲它是一個標準,所以遵循它是很重要的,因爲Java中的庫和技術可能會在後臺使用它。例如:在JSP中表達式語言,GUI構建器等

規格:http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/

+1

你從哪裏見過聽衆是必要的?我還沒有聽說過... – maba 2012-08-06 13:52:00

+0

他們是沒有必要的,但如果你必須使用,則應遵循標準。至少我在五年前得到我的SCJP時研究過它。看看:http://www.oracle.com/technetwork/java/javase/documentation/javabeans-getlisteners-192680.html – davidbuzatto 2012-08-06 13:53:39

2

是不是這樣?我關門了嗎?

是的,你是正確的比較。大多數豆類堅持這種基本的定義規則。但是,只需添加幾件事。爲了區分bean和POJO(Plain Old Java Object),bean有一個默認的構造函數,通常實現可序列化的接口。

這使您可以用在許多框架基本型號。豆主要用於以簡單的佈局結構存儲和檢索數據,因此可以在特定的體系結構中共享數據模型。示例包括在UI中使用相同的數據觸發事件以處理不同的對話,或者檢索給定ORM(對象關係映射)的結果。您可能要查看的其他示例是DTO(數據傳輸對象),VO(值對象)和EJB(企業Java Bean)。

相關問題