推荐用属性代替 getter/setter

Posted sp42a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐用属性代替 getter/setter相关的知识,希望对你有一定的参考价值。

Java 实体类有条不成文的规矩,Bean 是一个 getter/setter:

class Apple 
	private String color;
	
	public void setColor(String color) 
		this.color = color;
	

	public String getColor() 
		return color;
	

然后有人觉得 getter/setter 书写太烦了,于是有了 Lombok,这样的话 getter/setter 就消失了(起码是看不见了)。

但是,Java 不是有**属性字段(field)**的吗,——我自打初学 Java 开始,就是不明白为什么不能直接用属性,非要套 getter/setter?不用 getter/setter 会怎样?

我一直没有答案,网上找到的所谓答案我觉得都是解答不到位的。

我不想用 Lombok,这货入侵太强,同时觉得 getter/setter 真的很烦,虽然 IDE 可以帮你一键生成。于是我——

——大胆使用——属性!

这样,实体类就变成:

class Apple 
	public String color;


new Apple().color = "red";

我项目中没发觉任何不妥,当然,你的序列化工具,如 JSON 转换,JDBC/MyBatis 转换,可能要处理一下。重点是,代码行数变小,清爽很多:)

以上是关于推荐用属性代替 getter/setter的主要内容,如果未能解决你的问题,请参考以下文章

Angular @Input getter/setter 和非原始值

在 PyGetSetDef 中使用闭包来重用属性 getter-setter

JSON 使用 getter/setter 对 ES6 类属性进行字符串化

19-oc@property和@synthesize

JS对象属性中get/set与getter/setter是什么

as3 1119: 访问可能未定义的属性 getter/setter