2017-04-19 30 views
1

我很難理解爲什麼javabeans是必要的,爲什麼他們不直接將javabean特性直接放入java中的對象類(根類)?爲什麼沒有將javabean特性內置到根JAVA對象中?

我的理解是將一個對象(實例)轉換爲一個java bean,這樣你就可以獲得所有bean的所有對象的可序列化等所有優點。但是,如果是這樣的話,爲什麼即使有一個單獨的bean類,爲什麼不只是內置到根對象類?

還是我不明白這一點?

回答

2

你不是正確的理解它。 沒有實際的Java類或接口是bean。這只是一種模式,一種慣例。

bean約定基本上是一個類將通過公共getXxx和setXxx方法公開地公開部分或全部屬性,其中XXX是屬性的名稱。

豆一般應該是可序列化的,但任何類都可以是可序列化的,並且不需要遵循bean約定。

+0

好吧,清除東西了。那麼爲什麼要將一組對象放入一個bean中並直接訪問它們呢?是否因爲某些對象鏈接到其他對象,因此最好將它封裝並確保對象一致/可管理? – coderg

+0

爲什麼不只是爲每個需要的情況創建一個構造函數,還是創建一個設置這些屬性的bean? – coderg

+0

安裝者是一個壞主意!我希望我的字段是最終的,以便編譯器確保它們僅被初始化一次。安裝者破壞不變性。 – GhostCat

0

只是談論bean模式的無參數構造函數部分:默認情況下,類沒有參數構造函數,但只要創建另一個構造函數,就可以有效地移除它,正如您可能知道的那樣。但是如果你被迫總是有一個沒有參數的構造函數,如果你有一個在構造函數中有一個由參數賦值的final域的類,那麼這真的很煩人。然後你需要有一些沒有參數的構造函數,它將一切都分配給null,或者拋出一個異常來告訴其他開發者不要使用no參數,這很醜陋。

1

除了灰色的答案:即使會有一個Bean界面或方法 - 不是每個水果都是蘋果!

含義:有很多類都是很好的不是bean。

除此之外:作爲java的序列化通常被認爲沒有那麼有用。現在我們主要序列化爲JSON的原因很充分。換句話說:現在我們非常高興,並不是所有的類都默認實現了Serializeable;因爲Object是一個Bean。

相關問題