Eigenschaften in groovy scheinen wie Klassenfelder in Java ohne Zugriffsmodifizierer. Ist das wahr? Oder sie haben eine besondere Bedeutung. Es scheint, als ob es keine Möglichkeit gibt, die Eigenschaften privat zu machen.Was sind "Eigenschaften" in Groovy?
Antwort
Eigenschaften können normalerweise wie Felder behandelt werden, aber sie werden tatsächlich durch implizite Getter/Setter unterstützt, sodass Sie sie immer noch wie Felder referenzieren oder sie als Werte festlegen können. Hinter den Kulissen verwenden sie Getter/Setter (die Sie neu definieren können, wenn Sie möchten).
Diese Seite hat Einzelheiten zu Eigenschaften/Feldern und Zugriffsmodifikatoren (siehe insbesondere die „Eigentum und Feldregeln“ Abschnitt): http://groovy.codehaus.org/Groovy+Beans
Es zeigt auch, dass Sie eine Privateigentum (Privat Feld von privaten Getter gesichert machen/setter), aber Sie müssen explizit die Getter/Setter definieren.
Wenn ein starkes Klassendefinition ein Feld ohne Zugriffs Modifikator erklärt, dann wird ein öffentliche setter/Getter-Methode Paar und ein privates Instanzvariablenfeld erzeugt wird, die auch als „Eigentum“ entsprechend die JavaBeans specification bekannt ist.
Wenn wir ein öffentliches Instanzvariablenfeld deklarieren, erhalten wir nur ein öffentliches Feld ohne ein Setter/Getter-Methodenpaar.
class A {
public String field
/*
public String field
*/
}
Von einem pov abgefahrene Client, gibt es keinen Unterschied ein Groovy Eigenschaft zwischen den Zugriff auf und ein öffentliches Feld zur Laufzeit
def a = new A()
println a.field
println a.property
obwohl a.field
direkt die Instanz-Variable zugreift und a.property
ruft tatsächlich a.getProperty()
(oder a.setProperty(...)
wenn Sie einen Wert zuweisen). Da die Eigenschaft jedoch der JavaBeans-Spezifikation entspricht, kann die Klasse nahtlos in Java-basierten Umgebungen verwendet werden.
Ich sehe nicht viel Sinn darin, ein "Privateigentum" zu machen. private
schränkt die Verwendung einer Methode oder Instanz-/Klassenvariable auf den Host-Klassentyp ein. Aber vielleicht hast du damit gemeint, eine private Feldinstanzvariable zu machen.
- 1. Groovy: wie Eigenschaften in Basisklasse
- 2. Was sind die verschiedenen Eigenschaften in System.DirectoryServices.DirectorySearcher.PropertiesToLoad
- 3. sind Eigenschaften in weiteren Eigenschaften
- 4. groovy Schnittstelle Methode zu Eigenschaften
- 5. Was sind die Eigenschaften von Spaghetti Code?
- 6. Was sind Gradle Task Definitionen in groovy Sprache?
- 7. Was sind die besten Eigenschaften von Scala?
- 8. Was sind Unterschiede zwischen HostAttributes und Eigenschaften in Polymer?
- 9. Was sind die Hauptunterschiede zwischen Scala und Groovy?
- 10. was in Groovy final bedeutet die
- 11. Was bedeutet "privat" in Groovy?
- 12. Eigenschaften sind nicht alphabetisch
- 13. Eigenschaften sind Null in Komponententest
- 14. Kartenschlüssel sind Objekte oder nicht in Groovy?
- 15. Groovy Liste alle Eigenschaften für Klasse
- 16. Was sind Modelle zum Speichern von Baumstrukturen und was sind ihre Eigenschaften?
- 17. Sind C# Inline-Eigenschaften?
- 18. Warum Eigenschaften in Interfaces nicht deklarierbar sind
- 19. Was sind die MSBuild-Eigenschaften auf Projektebene für Delphi?
- 20. Was sind einige interessante Eigenschaften des EveryBlock.com Quellcodes?
- 21. Hält JsonOutput.toJson in groovy die Reihenfolge der Eigenschaften?
- 22. Welche Kotlin-Funktionen sind im statisch kompilierten Groovy nicht verfügbar?
- 23. Sind Eigenschaften gut oder schlecht?
- 24. was ist der Zweck der Laufzeit-Mixins in groovy
- 25. Sind C# -Eigenschaften tatsächlich Methoden?
- 26. Sind Java-Eigenschaften effektiv veraltet?
- 27. Was sind "" in OCaml?
- 28. Vererbung in Groovy Konfigurationsdatei
- 29. JavaScript-Eigenschaften mit Setter-Methoden sind keine realen Eigenschaften?
- 30. Was sind die Standardschriftmerkmale in Android?
Die Bearbeitungswarteschlange für diese Frage ist voll, aber ein aktualisierter (aktuellerer) Link zur Erläuterung von Eigenschaften und Feldern finden Sie hier: http://groovy-lang.org/objectorientation.html#_fields_and_properties –