Groovy'deki özellikler, erişim değiştiricisi olmayan java'da sınıf alanları gibi görünüyor. Bu doğru mu? Ya da özel bir anlamı var. Özellikleri özel yapmak için bir yolu yok gibi görünüyor?Groovy'de 'özellikler' nelerdir?
cevap
Özellikler normal olarak alanlar gibi ele alınabilir, ancak bunlar aslında örtülü alıcılar/setleyiciler tarafından desteklenir, böylece bunları hala alanlar gibi referans alabilir veya değerlere eşit olarak ayarlayabilirsiniz. Sahnelerin ardında, alıcılar/ayarlayıcılar kullanıyorlar (eğer ilgilenirseniz yeniden tanımlayabilirsiniz). http://groovy.codehaus.org/Groovy+Beans
Ayrıca özel alıcılar tarafından desteklenen özel mülkiyeti (özel alan yapabileceği gösterilmektedir:
Bu sayfa özellikleri/alanları ve erişim değiştiricileri ilgili ayrıntıları (özellikle "Mülkiyet ve saha kuralları" bölümüne bakın) sahiptir/setters), ancak alıcıları/ayarlayıcıları tanımlamakta açık olmalısınız.
Groovy sınıf tanımı, erişim değiştiricisi olmayan bir alanı bildirdiğinde, JavaBeans specification'a göre "property" olarak da bilinen bir public setter/getter yöntem çifti ve özel örnek değişken alanı oluşturulur.
class A {
String property
/*
private String property
public void setProperty(String property) { ... }
public String getProperty() { ... }
*/
}
biz ayarlayıcı/alıcı yöntemi çifti olmadan sadece bir kamu alanı açıp bir ortak örnek değişken alanını beyan edin.
bir Groovy müşterinin pov itibarenclass A {
public String field
/*
public String field
*/
}
, orada zamanında bir Groovy mülk ve kamu alanı erişmek arasındaki fark a.field
rağmen
def a = new A()
println a.field
println a.property
doğrudan örnek değişkeni erişir ve a.property
aslında a.getProperty()
çağırır (veya a.setProperty(...)
bir değer atarken). Ancak özellik JavaBeans özelliklerine uygun olduğu için, sınıf, Java tabanlı ortamlarda sorunsuzca kullanılabilir.
"Özel mülkiyet" oluşturmayla ilgili pek bir şey görmüyorum. private
, barındırma sınıfı türüne bir yöntem veya örnek/sınıf değişkeninin kullanımını kısıtlar. Ama belki de özel bir alan örneği değişkeni yapmaktan bahsediyordunuz.
Bu soru için sırayı düzenle dolu, ancak alanlara vs açıklamak için güncellenmiş (daha güncel) bir bağlantı burada: http://groovy-lang.org/objectorientation.html#_fields_and_properties –