java中提倡不适用公有域,为什么呢

用了java很长时间,不过这个问题一直想问,
很多人都说不使用,public field,转而使用getter 和setter替代,除了可以对客户隐藏实现以外,还有什么其他好处?

我说一点吧

因为java的代理不管是cglib还是jdk proxy,都是代理的方法

没有代理属性这样的功能,代理方法能做到一些特殊处理

比如说hibernate的延迟加载了,其实就是代理了get set,来做到的

javabean规范!

java反射对于域的访问要比方法访问慢的多。
当然也有规范的原因。