簡體   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