Re: [問題] Getter and Setter

看板java作者 (畢業了..@@")時間12年前 (2013/07/13 14:51), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串5/5 (看更多)
※ 引述《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
文章代碼(AID): #1HuFaC6O (java)
文章代碼(AID): #1HuFaC6O (java)