Tytuł zadaj to wszystko: Jak uzyskać wszystkie nazwy właściwości klasy Groovy?Jak uzyskać wszystkie nazwy właściwości klasy Groovy?
Czy to możliwe? Pomyślałem, że mogę użyć składni kolekcji z klasami też, jeśli nie działa.
Tytuł zadaj to wszystko: Jak uzyskać wszystkie nazwy właściwości klasy Groovy?Jak uzyskać wszystkie nazwy właściwości klasy Groovy?
Czy to możliwe? Pomyślałem, że mogę użyć składni kolekcji z klasami też, jeśli nie działa.
Czy można użyć interfejsu Java Reflection API?
Spójrz na getDeclaredFields of java.lang.Class.
Spójrz na MetaClass API.
Używam kompilatora groovy 2.4 Dostaję java.util.LinkedHashMap
zawierający wszystkie właściwości i ich wartości zwracane przez wywołanie getProperties()
na groovy obiektu.
class PropertyDemoClass {
int firstProperty = 1;
String secondProperty = "rhubarb"
String thirdProperty = "custard"
}
PropertyDemoClass demoClass = new PropertyDemoClass()
println demoClass.getProperties().toString()
co skutkuje:
[firstProperty:1, secondProperty:rhubarb, class:class PropertyDemoClass, thirdProperty:custard]
Mały przykładowy fragment kodu byłby wspaniałym dodatkiem ... –
To nie jest właściwie kopią http://stackoverflow.com/questions/1477706/groovy-property-iteration bo to pytanie jest pytaniem tylko dla nieruchomości nazwy, a nie nazwę i wartości do celów przypisania. – pczeus
@pczeus Jeśli wiesz, jak uzyskać nazwy i wartości, to wiesz również, jak uzyskać tylko nazwy. –
@MarkRotteveel To jest niepoprawne. Przez wywołanie getProperties() otrzymujesz zarówno nazwy, jak i wartości. Nie daje możliwości uzyskania tylko nazw. Tak, możesz kluczować() wynik, ale już zapłaciłeś cenę Groovy wywołując wszystkie gettery() i pobierając wartości. Chodzi mi o to, że w Groovy jest inna opcja, aby uzyskać tylko nazwy właściwości bez ponoszenia kary za uzyskanie wartości. W wielu przypadkach nie ma to znaczenia, ale niezależnie od tego nie jest to faktyczne zduplikowane pytanie, ponieważ wymaga tylko nazw. – pczeus