Re: [問題] Getter and Setter
※ 引述《gn00742754 (西門貓)》之銘言:
: 感謝darkk6精美的圖表跟程式碼^___^
: 但是我最大的疑惑是,
: 在Java這樣的特性下,
: Getter and Setter只有在基本型別下才有意義不是嗎?
: 假設我現在有Room跟User兩個Bean,
: Room存放了UserList,
: 假設我的Room只提供Getter,
: 那一般的實作不是通常是這樣
其實field設成private
並且用getter/setter來去access
其實並不是為了讓裡面的物件不被修改
主要的目的是為了要把"存取"這個物件中間取得一層的屏障
而不是赤裸裸的直接存取成員變數
這樣的好處有以下幾點
1. 我們可以部分的提供setter跟getter..
只提供getter就是有點類似read-only field
但是這個read-only並不是回傳的object不能被更動
而是field所指到的object不會更動
2. getter可以包裝回傳值
例如getter可以不直接回傳object, 而選擇clone一份
來達到回傳的object不會影響到原本field refrence的object
3. setter/getter除了本身功能,還可以增加一些邏輯
4. 為了javabean..
getter/setter本身就是一個java定的naming convention
其實很多java進階的library都有用javabean的setter/getter來reflection
以我寫作的邏輯
基本上除非是那種public static final xxxxx
不然我都不會直接取值
而會選擇用setter/getter去包裝
現在IDE都用自動generate setter/getter
所以不會影響到開發效率
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.137.67.168
※ 編輯: popcorny 來自: 220.137.67.168 (07/13 14:52)
→
07/13 15:22, , 1F
07/13 15:22, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):