2010-07-22 2 views
6

Groovy Beans - это здорово, но мне просто интересно, можно ли объявить члена класса частным и не генерировать его для доступа к нему легко? Страница http://groovy.codehaus.org/Groovy+Beans>Groovy Beans не охватывает эту тему. Единственное, что я могу придумать, - это определить аксессоров и сделать их частными.Как отключить генерацию Groovy-аксессуаров?

ответ

10

Groovy не будет добавлять аксессуаров, если участник объявлен с модификатором доступа: закрытый, защищенный или открытый. Если вам не нужны аксессоры, просто добавьте подходящий модификатор. Вот пример, который иллюстрирует это:

class Test1 { private int blat } 
println Test1.metaClass.getMethods()*.name.findAll { it.endsWith("Blat") } 
class Test2 { protected int blat } 
println Test2.metaClass.getMethods()*.name.findAll { it.endsWith("Blat") } 
class Test3 { public int blat } 
println Test3.metaClass.getMethods()*.name.findAll { it.endsWith("Blat") } 
class Test4 { int blat } 
println Test4.metaClass.getMethods()*.name.findAll { it.endsWith("Blat") } 

Печать:

[] 
[] 
[] 
[getBlat, setBlat] 
+0

Это довольно круто. Я только что предположил, что публичные члены имеют свои аксессуры, созданные автоматически, но не закрытые или защищенные. – Blacktiger

+0

Да, на самом деле кажется, что «публичный» ДОЛЖЕН делать аксессуаров, но мне придется больше исследовать. – Vinny

Смежные вопросы