主要观点:面向对象编程的核心概念封装在较新语言中通过一流属性解决良好,但 Java 需用 JavaBeans 规范实现封装。在集合类型字段中,封装和 JavaBean/getter/setter 模式很有用,例如对于MyClass
类的myStrings
字段,需提供访问器方法并遵循不返回null
集合的原则,同时要注意处理null
值及避免客户端直接操作内部列表等问题,最终可实现一个完全封装的类。
关键信息:
- 新语言如 Kotlin、Swift、Ceylon 用一流属性解决封装。
- Java 用 JavaBeans 规范,类字段需私有,通过 getter 和 setter 方法暴露。
- 集合类型字段应遵循不返回
null
集合原则,如MyClass
类的getMyStrings
方法。 - 要注意处理
null
值,如setMyStrings
方法处理传入null
的情况。 - 避免客户端直接操作内部列表,如更新
setMyStrings
方法。 - 可添加其他方法如
addString
等方便操作。
重要细节: - Java 8 引入的 Optional 类,不应从返回 Optional 的方法中返回
null
。 - 对于
MyClass
类,初始getMyStrings
方法可能返回null
,需修改。 - 传入
null
到setMyStrings
可能导致问题,需改进方法。 - 改进后的
setMyStrings
方法可确保myStrings
与输入参数元素一致或为空。 - 将
myStrings
设为final
,并通过getMyStrings
的防御性拷贝避免客户端直接引用。 - 可添加其他方便的方法如
addStrings
、clearStrings
、replaceStrings
等。最终得到一个符合 JavaBean 规范且完全封装的类。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。