BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #41640同步于 2015/6/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

关于getter和setter

hwz2311245
2015/6/14镜像同步29 回复
我知道写这个一定会被喷的,不过最近想这个概念想了比较久,还是想说一说。。。 首先,我个人认为getter和setter的一些好处: 1、把读写权限分开来了,这是设置public和private所做不到的 2、对于某些读入和写出需要做统一处理的话,复用性较高 3、一定程度上可以避免变量值被错误的修改 但是,因为IDE的辅助功能,我觉得getter和setter有点泛滥了。对于一个纯粹需要保存变量的类来说,一堆纯粹IDE生成的getter和setter真的是太啰嗦了(也许JAVA本身就应该是啰嗦的吧)。且不说getter和setter占了一大半的代码量,而且取值和赋值的时候也显得非常冗余。 大概是写python写的有点多了,对代码的冗余完全不能忍。于是乎,最近一怒之下把在开发的android应用所有无用的getter和setter全删了,只保留需要的getter和setter(上述的1、2好处)。 网上有人说使用getter和setter能够使后期修改成本变小,一定程度上确实可以,但是我所开发的项目中,对一个实体类的改动最频繁的是:添加/删除变量,改变变量类型。完全不觉得在这方面上,getter和setter能够起到任何帮助,反而得花费时间修改对应的getter和setter(虽然有IDE帮忙)。 纯粹个人理解,欢迎批评~
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
moonpather机器人#1 · 2015/6/14
我记得只需要加个注解就可以不写setter和getter方法了
shuian0930机器人#2 · 2015/6/14
不用就不写啊,感觉没什么问题 【 在 hwz2311245 (【意涵团】Captain) 的大作中提到: 】 : 我知道写这个一定会被喷的,不过最近想这个概念想了比较久,还是想说一说。。。 : 首先,我个人认为getter和setter的一些好处: : 1、把读写权限分开来了,这是设置public和private所做不到的 : ................... 通过『我邮2.0』发布
dss886机器人#3 · 2015/6/14
需要控制权限才写getter和setter,一般保存引用的话不需要吧,比如官方示例的ViewHolder就不带 【 在 hwz2311245 (【意涵团】Captain) 的大作中提到: 】 : 我知道写这个一定会被喷的,不过最近想这个概念想了比较久,还是想说一说。。。 : 首先,我个人认为getter和setter的一些好处: : ...................
nuanyangyang机器人#4 · 2015/6/14
楼主用scala吧。val就是只有getter,var就是有getter和setter。 class Foo { val readOnlyField = 42 var readWriteField = 84 } object Main extends App { val f = new Foo() println(f.readOnlyField) // 42. 其实是调用了f.readOnlyField()方法 println(f.readWriteField) // 84. 其实是调用了f.readWriteField()方法 f.readWriteField = 9 // 其实是调用了f.readWriteField=(9)方法。嗯。方法的名字叫“readWriteField=”,有等号。 println(f.readWriteField) // 9 }
nuanyangyang机器人#5 · 2015/6/14
【 在 dss886 的大作中提到: 】 : 需要控制权限才写getter和setter,一般保存引用的话不需要吧,比如官方示例的ViewHolder就不带 还有二进制兼容性的问题,也是setter和getter的好处。
dss886机器人#6 · 2015/6/14
二进制兼容是什么意思?……我就知道如果不带getter和setter,用Gson转json为对象会报错-。- 【 在 nuanyangyang (暖羊羊) 的大作中提到: 】 : 还有二进制兼容性的问题,也是setter和getter的好处。
a2722863机器人#7 · 2015/6/14
代码量少或者需求变化小的时候怎么搞都行。 或者规范点可以用lombok之类的
nuanyangyang机器人#8 · 2015/6/14
【 在 dss886 的大作中提到: 】 : 二进制兼容是什么意思?……我就知道如果不带getter和setter,用Gson转json为对象会报错-。- 就是如果张三写了一个库libFoo,以jar包发布。李四写了一个应用Bar,Bar使用libFoo里的一个类Foo。然后张三修改了Foo的实现,给李四发了一个jar包。问李四能不能不重新编译他的Bar就直接使用更新过的类。
youxin2012机器人#9 · 2015/6/14
加lombok.jar,变量上用注解,帮你生成getter,setter