Package pi.util

Class ReflectionUtil

java.lang.Object
pi.util.ReflectionUtil

public final class ReflectionUtil extends Object
Eine Sammlung von statischen Hilfsmethoden, um mit Reflection zu arbeiten.
Author:
Steffen Wilke, Matthias Wilke
  • Method Details

    • getField

      public static <T> Field getField(Class<T> cls, String fieldName)
      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

      public static <T> Field getField(Class<T> cls, String fieldName, boolean recursive)
      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

      public static <V> V getStaticValue(Class<?> cls, String fieldName)
      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

      public static List<Field> getAllFields(List<Field> fields, Class<?> type)
      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

      public static Method getMethod(String name, Class<?> type, Class<?>... parameterTypes)
      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

      public static <T, C> boolean setValue(Class<C> cls, Object instance, String fieldName, T value)
      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, andernfalls false.
    • 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, andernfalls false.
    • getSetter

      public static <T> Method getSetter(Class<T> cls, String fieldName)
      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

      public static <T> Collection<Method> getSetters(Class<T> cls)
      Liefert alle oeffentlichen Setter-Methoden eines Typs.
      Parameters:
      cls - Der Typ, dessen Setter ermittelt werden.
      Returns:
      Eine unveraenderliche Sammlung aller gefundenen Setter.
    • isWrapperType

      public static <T, C> boolean isWrapperType(Class<T> primitive, Class<C> potentialWrapper)
      Prueft, ob ein Typ der Wrapper-Typ eines primitiven Typs ist.
      Parameters:
      primitive - Der primitive Typ.
      potentialWrapper - Der moegliche Wrapper-Typ.
      Returns:
      true, wenn potentialWrapper der passende Wrapper-Typ zu primitive ist, andernfalls false.
    • 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, andernfalls false.
    • 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

      public static Collection<Method> getEvents(Class<?> type)
      Liefert die Ereignismethoden des angegebenen Typs.

      Hierzu werden alle Methoden gesucht, die einen Parameter vom Typ EventListener besitzen 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

      public static <T> T getDefaultValue(Class<T> clazz)
      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, false oder null.
    • getGenericOfInterface

      public static Type getGenericOfInterface(Class<?> clazz, Class<?> interfaze)
      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