groovy中的屬性看起來像java中沒有訪問修飾符的類字段。真的嗎?或者他們有特殊的含義。似乎沒有辦法讓這些屬性變成私人的?Groovy中的「屬性」是什麼?
9
A
回答
3
屬性通常可以像字段一樣對待,但它們實際上是由隱式getter/setters支持的,所以您仍然可以像字段一樣引用它們或將它們設置爲等於值。在幕後,他們正在使用getter/setter(你可以重新定義你是否喜歡)。
這個頁面有(部分見尤其是「物權和現場規則」)在性能/字段和訪問修飾符細節:http://groovy.codehaus.org/Groovy+Beans
這也表明,你可以通過私人干將支持的私有財產(private字段/ setter),但是你必須明確定義getter/setter。
12
當一個Groovy類定義聲明一個沒有訪問修飾符的字段時,將生成一個公共setter/getter方法對和一個私有實例變量字段,根據JavaBeans specification,該字段也被稱爲「屬性」。
class A {
String property
/*
private String property
public void setProperty(String property) { ... }
public String getProperty() { ... }
*/
}
如果我們聲明一個公共實例變量字段,我們只是得到一個公共字段,沒有setter/getter方法對。
class A {
public String field
/*
public String field
*/
}
從Groovy的客戶POV,有在運行時訪問Groovy的屬性和公共領域之間沒有區別
def a = new A()
println a.field
println a.property
雖然a.field
直接訪問實例變量和a.property
實際調用a.getProperty()
(或a.setProperty(...)
當分配一個值時)。但是,由於該屬性符合JavaBeans規範,該類可以無縫地用於基於Java的環境。
我在製作「私人財產」時看不到多少意義。 private
將方法或實例/類變量用於託管類類型。但也許你是指製作一個私人字段實例變量。
相關問題
- 1. 什麼是將參數複製到Groovy類中的屬性的Groovy方法?
- 2. 什麼是屬性?
- 3. uitableviewcell的屬性是什麼?
- 4. 什麼是強屬性屬性
- 5. groovy的元屬性?
- 6. LoginPageLink中的'Type'屬性值是什麼?
- 7. xml中的'base'屬性是什麼?
- 8. 什麼是C#中的屬性
- 9. 什麼是rails中的「嵌套屬性」?
- 10. 什麼是HTML中的枚舉屬性?
- 11. java中屬性的含義是什麼?
- 12. C#中屬性的用途是什麼?
- 13. XML屬性中的問號是什麼?
- 14. Magento:magento中的屬性TYPES是什麼?
- 15. Python中的屬性「__class__」是什麼
- 16. 屬性中的ownerType是什麼?
- 17. 什麼是Java中的「mnemonicParsing」屬性FX
- 18. javascript src屬性中的rootpath是什麼?
- 19. AndroidManifest中的android:supportsRtl屬性是什麼
- 20. 什麼是WPF中的依賴屬性
- 21. 什麼是Asp.net中的HttpResponse.OutputStream屬性?
- 22. 什麼是HTML中的innerHTML屬性
- 23. 對象屬性中的@是什麼?
- 24. 什麼是XAML中的內容屬性?
- 25. CouchDB中userCtx的屬性是什麼?
- 26. NAnt中保存的屬性是什麼?
- 27. 什麼是HTML中的全局屬性
- 28. 什麼是WCF類中的IsWrapped屬性
- 29. Rails.application.configure中的「domain」屬性是什麼?
- 30. 什麼是HttpDelete屬性
此問題的編輯隊列已滿,但解釋屬性與字段的更新(更新)鏈接位於此處:http://groovy-lang.org/objectorientation.html#_fields_and_properties –