大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 基礎內容分享:Java封裝練習題

基礎內容分享:Java封裝練習題

更新時間:2020-07-08 15:47:12 來源:動力節點 瀏覽3015次

Java中封裝的實現,是通過為私有成員提供訪問器方法,即通常所知的getter和setter方法。這樣封裝是否合適仍屬爭議,也超出了本文的討論范圍。但是,當成員變量為集合類型(java.util.Collection,java.util.Map以及它們的子類)時,這樣實現封裝是完全錯誤的。

我經常能見到的代碼像下面這樣:

基礎內容分享:Java封裝練習題

就我所見,這樣的代碼很普遍,這是由于Hibernate等ORM框架使得這種設計變得流行。很多時候,當我提出我的觀點,得到的建議就是使用一種不可變的設計:

基礎內容分享:Java封裝練習題

不合適的封裝

然而,在使用集合類型的情形下,由于Java中集合類型自身是可變的,這其實并沒有任何改變。很明顯,無論是通過構造函數傳入一個集合實例的引用,還是返回它的引用,這完全沒有進行封裝。只有當集合實例的引用沒有(在外部)保留,也不會返回(到外部),真正的封裝才有可能實現。

基礎內容分享:Java封裝練習題

不能使用具體的子類

另外,MyBean類可能需要封裝一種更具體的集合類,比如List或者Set。從下面的代碼片段可以看出,傳入一個Set實例是不可能的。

基礎內容分享:Java封裝練習題

不能選擇具體的實現

由上一點很自然地想到,使用(外部)提供的引用的話,我們也無法使用(可能為了更高效)自己定義的類,比如Apache Commons的FastArrayList。

實現建議

下面的代碼做到了真正封裝的出發點。

基礎內容分享:Java封裝練習題

這種方式解決了前面提到的幾個問題:

集合實例的引用沒有從構造函數中傳入,這樣就不可能在實例外部改變實例。

由于完全隔離,可以自由地選擇集合的實現,為修改留下余地。

不能通過getter訪問器方法獲得被封裝的集合實例的引用。

注意:為了可讀性,前面的代碼片段沒有使用泛型。請在實際使用中加上。

以上就是動力節點java培訓機構的小編針對“基礎內容分享:Java封裝練習題”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产网址 | 在线观看精品视频一区二区三区 | 黄色影院在线观看 | 精品久久久久久中文字幕专区 | 亚洲国产人成在线观看 | 日韩在线视精品在亚洲 | 欧美另类综合 | 国产偷国产偷在线高清 | 亚洲男人的天堂在线视频 | 欧美一级欧美一级毛片 | 精品一区二区三区免费观看 | 老妇激情毛片免费中国 | 五月狠狠亚洲小说专区 | 国产h视频免费观看 | 高清亚洲 | 欧美成人激情在线 | 起碰成人免费公开网视频 | 欧洲自拍偷拍 | 欧美精品 日韩 | 爱爱免费播放视频在线观看 | 久久免费高清视频 | 欧美成人国产一区二区 | 欧美成人看片一区二区三区 | 一级高清毛片 | 欧美影院一区二区三区 | 在线国产视频 | 欧美一级高清片欧美国产欧美 | 黑人边吃奶边扎下面激情视频 | 亚洲色视频在线播放网站 | 国产精品成人一区二区不卡 | 四虎成人欧美精品在永久在线 | 欧美成人全部免费观看1314色 | 国产成人精品日本亚洲麻豆 | 四虎精品久久 | 五月婷婷欧美 | 新久草在线 | 久久久综合九色合综国产 | 色费女人18毛片a级视频在线 | 久久99精品九九九久久婷婷 | 国产精品999视频 | 欧美日韩精品一区二区三区 |