尝试Java,从入门到Kotlin(上) (2)

在面向对象哲学中,字段属于实现细节,应该设为private使它隐藏在类的内部。但是在实际中,有很多字段需要直接访问和修改。从功能实现上讲,直接把字段设为public也是可以的。但是这样做的坏处在于未来功能扩展时,这个字段的含义、存储方式可能发生变化,导致每个使用了这个字段的代码都需要修改。因此,应该将字段的访问封装的方法中,即使只是很简单的访问和设置,也应该实现getter方法和setter方法。

C#和Python有property特性支持快速定义和调用getter方法和setter方法。Ruby则依靠函数调用可以省略括号的特性,使getter方法看起来很像直接访问字段。Java没有使用特性支持getter和setter方法,而是约定必须实现字段名前加get的getter方法(然而这里有个不一致的地方,如果字段是布尔类型,则加is)和字段名前加set的setter方法。这导致的一个问题是开发时需要编写大量的getter方法和setter方法。为Java冗长的特点贡献了一份力量。遵循这个规范很重要,以为在很多常用库,比如Json序列化,会以getter方法作为字段存在的依据。

为了减少开发工作量,可以使用IDE自动生成getter方法和setter方法。常见的Java IDE都支持自动生成getter方法和setter方法。另一个方案是使用Lombok,通过Data,Getter,Setter等注解,让编译器在编译时自动生成getter方法和setter。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfwps.html