繁体   English   中英

Java getters和setter只是方法吗?

[英]Are Java getters and setters simply methods?

以下是真实的:Java getter和setter只是方法。

我知道它们被实现为操纵或获取私有...属性/字段的值。 但是可以称他们为方法吗?

是的,没关系,他们只是方法!

从技术上讲,从语言和VM的角度来看,是的,它们只是方法。

然而,一些图书馆和框架认识到它们的特殊性。 例如,JPA可用于通过注释字段或方法来映射“属性”。 Beans Binding库使用它们来访问属性,所以如果你在某个对象上有一个getText() / setText()对,那么你可以将“text”属性绑定到某个其他对象的某个其他属性(你仍然需要尽管如此,请执行addPropertyChangeListener魔术。 但这只是一种“配置约定”现象与反射的力量相结合。

根据JLS

方法声明可以调用的可执行代码,将固定数量的值作为参数传递。

而且这个标准也适用于吸气剂和制定者; 所以我们可以说java语言中的“方法”。

幸运的是,我能够在谷歌中推出Craig Larman的“应用UML和模式” 一书 如引述

Accessing methods retrieve(accessor method) or set(mutator method)
attributes. In some languages such as Java it is a common idiom to 
have an accessor and mutator for each attribute, and to declare all
attributes private(to enforce data encapsulation). The methods are 
excluded in the class diagram because of the high noise-to-value ratio
they generate."

Java Getters和Setter是访问器方法。 所以,是的,它们是方法。

许多程序员(Java或其他程序员)可能会为所有私有字段不断编写getXXX()setXXX(type t)而烦恼,特别是如果它们基本上只是一行方法。 对于这种情况,有一些注释库(如Lombak )通过元编程和Java注释和反射的功能生成这些库。

但是,明确编写getter / setter的原因有很多。 一个良好的名单,可以发现在这里 但我也非常喜欢这个答案

是的,基本上他们是方法。 Java方法的标准定义如下:

方法是一组代码,由名称引用,只需使用方法名称即可在程序中的任何位置调用(调用)。

- https://mathbits.com/MathBits/Java/Methods/Lesson1.htm

因此,您可以将方法视为类本身中的小程序,这些方法允许我们完成特定任务,这也正是getter和setter所做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM