Package pi.util
Class ReflectionUtil
java.lang.Object
pi.util.ReflectionUtil
Eine Sammlung von statischen Hilfsmethoden, um mit Reflection zu
arbeiten.
- Author:
- Steffen Wilke, Matthias Wilke
-
Method Summary
Modifier and TypeMethodDescriptiongetAllFields(List<Field> fields, Class<?> type) Ermittelt rekursiv alle Felder des angegebenen Typs und berücksichtigt dabei auch Oberklassen.static <T> TgetDefaultValue(Class<T> clazz) Liefert den Standardwert eines Typs.static Collection<Method>Liefert die Ereignismethoden des angegebenen Typs.static <T> FieldLiefert ein Feld des angegebenen Typs anhand seines Namens.static <T> FieldLiefert ein Feld des angegebenen Typs anhand seines Namens und kann dabei optional auch Oberklassen durchsuchen.static TypegetGenericOfInterface(Class<?> clazz, Class<?> interfaze) Ermittelt den ersten generischen Typparameter eines Interfaces, das von einem Typ oder einer seiner Oberklassen beziehungsweise Oberinterfaces implementiert wird.static MethodErmittelt rekursiv eine Methode anhand ihres Namens und ihrer Parametertypen und berücksichtigt dabei auch Oberklassen.getMethodsAnnotatedWith(Class<?> type, Class<? extends Annotation> annotation) Liefert alle Methoden eines Typs, die mit einer bestimmten Annotation versehen sind.static <T> MethodLiefert den Setter zu einem Feldnamen.static <T> Collection<Method>getSetters(Class<T> cls) Liefert alle oeffentlichen Setter-Methoden eines Typs.static <V> VgetStaticValue(Class<?> cls, String fieldName) Liest den Wert eines statischen Feldes aus.static <T,C> boolean isWrapperType(Class<T> primitive, Class<C> potentialWrapper) Prueft, ob ein Typ der Wrapper-Typ eines primitiven Typs ist.static <T> booleanSetzt ein Enum-Feld anhand seines String-Werts.static <T> booleansetFieldValue(Class<T> cls, Object instance, String fieldName, String value) Setzt ein Feld anhand einer String-Repräsentation und konvertiert den Wert passend zum Feldtyp.static <T,C> boolean Setzt den Wert eines Feldes über einen Setter oder direkt per Feldzugriff.
-
Method Details
-
getField
Liefert ein Feld des angegebenen Typs anhand seines Namens.- Parameters:
cls- Der Typ, in dem nach dem Feld gesucht wird.fieldName- Der Name des gesuchten Feldes.- Returns:
- Das gefundene Feld oder
null, falls kein passendes Feld existiert.
-
getField
Liefert ein Feld des angegebenen Typs anhand seines Namens und kann dabei optional auch Oberklassen durchsuchen.- Parameters:
cls- Der Typ, in dem nach dem Feld gesucht wird.fieldName- Der Name des gesuchten Feldes.recursive- Gibt an, ob auch Oberklassen durchsucht werden sollen.- Returns:
- Das gefundene Feld oder
null, falls kein passendes Feld gefunden wurde.
-
getStaticValue
Liest den Wert eines statischen Feldes aus.- Parameters:
cls- Der Typ, der das statische Feld enthält.fieldName- Der Name des statischen Feldes.- Returns:
- Der Wert des Feldes oder
null, falls das Feld nicht gelesen werden kann.
-
getAllFields
Ermittelt rekursiv alle Felder des angegebenen Typs und berücksichtigt dabei auch Oberklassen.- Parameters:
fields- Die Liste, in die alle gefundenen Felder eingetragen werden.type- Der Typ, dessen Felder ermittelt werden sollen.- Returns:
- Alle Felder des angegebenen Typs einschließlich der Felder der Oberklassen.
-
getMethod
Ermittelt rekursiv eine Methode anhand ihres Namens und ihrer Parametertypen und berücksichtigt dabei auch Oberklassen.- Parameters:
name- Der Name der Methode.type- Der Typ, auf dem nach der Methode gesucht wird.parameterTypes- Die in der Methodensignatur definierten Parametertypen.- Returns:
- Die gefundene Methode oder
null, falls keine passende Methode existiert.
-
setValue
Setzt den Wert eines Feldes über einen Setter oder direkt per Feldzugriff.- Parameters:
cls- Der Typ, der das zu setzende Feld enthält.instance- Die Instanz, auf der der Wert gesetzt werden soll.fieldName- Der Name des Feldes.value- Der neue Wert.- Returns:
true, wenn der Wert erfolgreich gesetzt wurde, andernfallsfalse.
-
setEnumPropertyValue
public static <T> boolean setEnumPropertyValue(Class<T> cls, Object instance, Field field, String propertyName, String value) Setzt ein Enum-Feld anhand seines String-Werts.- Parameters:
cls- Der Typ, der das Feld enthält.instance- Die Instanz, auf der der Wert gesetzt werden soll.field- Das Enum-Feld.propertyName- Der Name der Eigenschaft.value- Die textuelle Repräsentation der Enum-Konstante.- Returns:
true, wenn eine passende Enum-Konstante gefunden und gesetzt wurde, andernfallsfalse.
-
getSetter
Liefert den Setter zu einem Feldnamen.- Parameters:
cls- Der Typ, dessen Setter durchsucht werden.fieldName- Der Name des Feldes.- Returns:
- Die passende Setter-Methode oder
null, falls kein Setter gefunden wurde.
-
getSetters
Liefert alle oeffentlichen Setter-Methoden eines Typs.- Parameters:
cls- Der Typ, dessen Setter ermittelt werden.- Returns:
- Eine unveraenderliche Sammlung aller gefundenen Setter.
-
isWrapperType
Prueft, ob ein Typ der Wrapper-Typ eines primitiven Typs ist.- Parameters:
primitive- Der primitive Typ.potentialWrapper- Der moegliche Wrapper-Typ.- Returns:
true, wennpotentialWrapperder passende Wrapper-Typ zuprimitiveist, andernfallsfalse.
-
setFieldValue
public static <T> boolean setFieldValue(Class<T> cls, Object instance, String fieldName, String value) Setzt ein Feld anhand einer String-Repräsentation und konvertiert den Wert passend zum Feldtyp.- Parameters:
cls- Der Typ, der das Feld enthält.instance- Die Instanz, auf der der Wert gesetzt werden soll.fieldName- Der Name des Feldes.value- Der zu konvertierende String-Wert.- Returns:
true, wenn das Feld erfolgreich gesetzt wurde, andernfallsfalse.
-
getMethodsAnnotatedWith
public static List<Method> getMethodsAnnotatedWith(Class<?> type, Class<? extends Annotation> annotation) Liefert alle Methoden eines Typs, die mit einer bestimmten Annotation versehen sind.- Parameters:
type- Der zu durchsuchende Typ.annotation- Die gesuchte Annotation.- Returns:
- Alle annotierten Methoden des Typs und seiner Oberklassen.
-
getEvents
Liefert die Ereignismethoden des angegebenen Typs.Hierzu werden alle Methoden gesucht, die einen Parameter vom Typ
EventListenerbesitzen und den Namenskonventionen der LITIENGINE für Event-Registrierungen entsprechen, also mit einem der Präfixe "add" oder "on" beginnen.- Parameters:
type- Der Typ, dessen Ereignismethoden untersucht werden.- Returns:
- Alle Methoden des angegebenen Typs, die als Ereignisse gewertet werden.
- See Also:
-
getDefaultValue
Liefert den Standardwert eines Typs.- Parameters:
clazz- Der Typ, für den der Standardwert ermittelt werden soll.- Returns:
- Der Java-Standardwert des Typs, etwa
0,falseodernull.
-
getGenericOfInterface
Ermittelt den ersten generischen Typparameter eines Interfaces, das von einem Typ oder einer seiner Oberklassen beziehungsweise Oberinterfaces implementiert wird.- Parameters:
clazz- Der zu untersuchende Typ.interfaze- Das Interface, dessen generischer Typparameter gesucht wird.- Returns:
- Der gefundene generische Typ oder
null, falls kein passender Typparameter ermittelt werden kann. - Since:
- 0.49.0
-