Właściwości w groovy wydają się jak pola klasy w java bez modyfikatora dostępu. Czy to prawda? Lub mają specjalne znaczenie. Wygląda na to, że nie ma możliwości, aby właściwości były prywatne?Co to są "właściwości" w Groovy?
Odpowiedz
Właściwości mogą być normalnie traktowani jak dziedzinach, ale w rzeczywistości są one poparte ukrytych pobierające/ustawiające, więc nadal można odwoływać się do nich jak pola lub ustawić je równa wartości. Za kulisami używają funkcji pobierających/ustawiających (które możesz przedefiniować, jeśli chcesz).
Ta strona zawiera szczegółowe informacje na temat właściwości/pól i modyfikatory dostępu (patrz zwłaszcza „zasady własności i pola” sekcji): http://groovy.codehaus.org/Groovy+Beans
To pokazuje również, że można dokonać własności prywatnej (pole prywatne wspierane przez prywatne pobierające/setters), ale musisz jasno określić definicje modułów pobierających/ustawiających.
Gdy definicja klasy Groovy deklaruje pole bez modyfikatora dostępu, generowana jest publiczna para zmiennych ustawiających/pobierających i prywatne pole zmiennej instancji, które jest również znane jako "właściwość" zgodnie z JavaBeans specification.
class A {
String property
/*
private String property
public void setProperty(String property) { ... }
public String getProperty() { ... }
*/
}
Jeśli deklarujemy wystąpienie publiczne zmienne pole my po prostu pole publicznego, bez metodę pary setter/getter.
class A {
public String field
/*
public String field
*/
}
Od POV groovy klienta, nie ma żadnej różnicy pomiędzy dostępu właściwość Groovy i pole publicznego w czasie wykonywania
def a = new A()
println a.field
println a.property
chociaż a.field
dostęp zmiennej instancji bezpośrednio i a.property
faktycznie nazywa a.getProperty()
(lub a.setProperty(...)
podczas przypisywania wartości). Ale ponieważ właściwość jest zgodna ze specyfikacją JavaBeans, klasa może być bezproblemowo używana w środowiskach opartych na Javie.
nie widzę większego sensu w tworzeniu „własności prywatnej”. private
ogranicza użycie metody lub instancji/klasy do typu klasy hostingu. Ale może miałeś na myśli tworzenie zmiennej prywatnej instancji pola.
- 1. Co to są `+:` i `-:`?
- 2. Co to są fortuny?
- 3. Co to są pojęcia?
- 4. Co to są CoreDataGeneratedAccessors?
- 5. Co to są RFC?
- 6. Co znaczy [:] w groovy?
- 7. Co to są "Groovy" i "Grails" i jakie rodzaje aplikacji są tworzone z ich wykorzystaniem?
- 8. Definicja właściwości Groovy
- 9. Co to jest @ w właściwości obiektu?
- 10. Co to są pliki FTL
- 11. Co to są opcje + FollowSymLinks?
- 12. Co to są czyste zmienne?
- 13. Co to są moduły CSS3?
- 14. Co to są połączenia ZygoteInit?
- 15. Co to są operatorzy zniesione?
- 16. Co to są hipotetyczne indeksy?
- 17. Co to są ograniczone szablony?
- 18. Co to są "pilne dane"?
- 19. Co to są Iteratory SCARY?
- 20. Co to są błędy xsession?
- 21. Co to są opcje skrótów?
- 22. Co to są Groovy/Grails/Hibernate/JBoss/Jade w bardzo prostych słowach?
- 23. Co to jest "to" w właściwości wybierz EntityDataSource?
- 24. Co to są pojemniki w Javie
- 25. Co to są klasy encji w php
- 26. Co to są pliki `rc` w nodejs?
- 27. Co to są instrukcje "jest" w D?
- 28. Co to są dostawcy w Angular2?
- 29. Co to są CocoaPods w systemie iOS?
- 30. Co to są sekcje krytyczne w wątkach
Edit kolejka na to pytanie jest pełna, ale uaktualniony (bardziej aktualne) Link do wyjaśnienia właściwości vs pól jest tutaj: http://groovy-lang.org/objectorientation.html#_fields_and_properties –