作者popcorny (毕业了..@@")
看板java
标题Re: [问题] Getter and Setter
时间Sat Jul 13 14:51:53 2013
※ 引述《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)
1F:→ gn00742754:感谢,我明白了! 07/13 15:22