com.tagtraum.framework.util
Class ReflectHelper

java.lang.Object
  extended bycom.tagtraum.framework.util.ReflectHelper

public class ReflectHelper
extends java.lang.Object

Räumt mit Unzulänglichkeiten des Reflect-API auf.
Ermöglicht das Finden von Methoden und Konstruktoren, obwohl die genaue Signatur (Methodenname bekannt, Parametertypes aber nicht) nicht bekannt ist.
Gibt außerdem Felder zurück, die in Oberklassen definiert sind.

Version:
$Id: ReflectHelper.java,v 1.21 2001/10/28 12:25:51 Hendrik Exp $
Author:
Hendrik Schreiber

Field Summary
static java.util.Hashtable myConstructorCache
          Cache für Konstruktor-Objekte.
static java.util.Hashtable myMethodCache
          Cache für Methoden-Objekte.
static java.util.HashMap myPrimitiveClassTable
          Table that returns a primitive class for a name.
static java.util.Hashtable myPrimitiveTable
          Tabelle, die für einen Primitiv-Typ ein Klassen-Objekt zurückgeben kann.
static java.util.Hashtable readMethodsCache
          Cache für ReadMethoden von Beans.
static java.lang.String vcid
          Source-Version
static java.util.Hashtable writeMethodsCache
          Cache für WriteMethoden von Beans.
 
Constructor Summary
ReflectHelper()
           
 
Method Summary
static java.lang.Class getClassForName(java.lang.String name)
          Returns a class for a name, including primitive types.
static java.lang.Class getClassForName(java.lang.String name, java.lang.ClassLoader loader)
          Returns a class for a name, including primitive types.
static java.lang.reflect.Field getField(java.lang.Class aClass, java.lang.String field)
          Besorge das Feld mit dem angegebenen Namen.
static java.lang.reflect.Method getMethod(java.lang.Class aClass, java.lang.String aMethodname, java.lang.Class[] aParameterTypes)
          Diese Methode gibt die spezifischste Methode zurück.
protected static java.lang.reflect.Constructor getMostSpecificConstructor(java.lang.Class aClass, java.lang.Class[] aParameterTypes)
          Gibt den spezifischste Konstruktor zurück.
protected static java.lang.reflect.Method getMostSpecificMethod(java.lang.Class aClass, java.lang.String methodname, java.lang.Class[] aParameterTypes)
          Gibt die spezifischste Methode zurück.
static java.lang.Class getPrimitiveType(java.lang.Class aClass)
          Gibt, falls möglich, den Primitiv-Typ der Klasse zurück.
static java.util.HashMap getReadMethods(java.lang.Class beanClass)
          Gibt die Getter einer Klasse zurueck.
protected static java.lang.String getTypesString(java.lang.Class[] aTypes)
          Gibt einen String für einen Array von Classes zurück.
static java.util.HashMap getWriteMethods(java.lang.Class beanClass)
          Gibt die Setter einer Klasse zurueck.
static boolean isAssignable(java.lang.Class[] toTypes, java.lang.Class[] fromTypes)
          Testet, ob ein Array von ParameterTypen in einen anderen gecastet werden kann.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

vcid

public static java.lang.String vcid
Source-Version


writeMethodsCache

public static java.util.Hashtable writeMethodsCache
Cache für WriteMethoden von Beans.


readMethodsCache

public static java.util.Hashtable readMethodsCache
Cache für ReadMethoden von Beans.


myMethodCache

public static java.util.Hashtable myMethodCache
Cache für Methoden-Objekte.


myConstructorCache

public static java.util.Hashtable myConstructorCache
Cache für Konstruktor-Objekte.


myPrimitiveTable

public static java.util.Hashtable myPrimitiveTable
Tabelle, die für einen Primitiv-Typ ein Klassen-Objekt zurückgeben kann.


myPrimitiveClassTable

public static java.util.HashMap myPrimitiveClassTable
Table that returns a primitive class for a name.

Constructor Detail

ReflectHelper

public ReflectHelper()
Method Detail

getClassForName

public static java.lang.Class getClassForName(java.lang.String name)
                                       throws java.lang.ClassNotFoundException
Returns a class for a name, including primitive types.

Throws:
java.lang.ClassNotFoundException

getClassForName

public static java.lang.Class getClassForName(java.lang.String name,
                                              java.lang.ClassLoader loader)
                                       throws java.lang.ClassNotFoundException
Returns a class for a name, including primitive types.

Throws:
java.lang.ClassNotFoundException

getField

public static final java.lang.reflect.Field getField(java.lang.Class aClass,
                                                     java.lang.String field)
                                              throws java.lang.SecurityException,
                                                     java.lang.NoSuchFieldException
Besorge das Feld mit dem angegebenen Namen. Falls dies nicht in der Klasse gefunden wird, suche in den Oberklassen bis Object.

Parameters:
aClass - Die Klasse des Felds
Throws:
java.lang.SecurityException - Auf das Feld durfte nicht zugegriffen werden
java.lang.NoSuchFieldException - Das Feld ist in der Klasse nicht vorhanden

getMethod

public static final java.lang.reflect.Method getMethod(java.lang.Class aClass,
                                                       java.lang.String aMethodname,
                                                       java.lang.Class[] aParameterTypes)
                                                throws java.lang.SecurityException,
                                                       java.lang.NoSuchMethodException
Diese Methode gibt die spezifischste Methode zurück. Sollten zwei oder mehr Methoden gleich spezifisch sein, wird entgegen des Verhaltens des Java-Compilers keine Fehlermeldung zurückgegeben.

Parameters:
aClass - die Klasse, deren Methode gefragt ist.
aMethodname - der gefragte Methodenname (ohne Signatur)
aParameterTypes - die Signatur der Methode
Returns:
die spezifischste Methode
Throws:
java.lang.SecurityException
java.lang.NoSuchMethodException

getMostSpecificMethod

protected static final java.lang.reflect.Method getMostSpecificMethod(java.lang.Class aClass,
                                                                      java.lang.String methodname,
                                                                      java.lang.Class[] aParameterTypes)
                                                               throws java.lang.SecurityException
Gibt die spezifischste Methode zurück.

Parameters:
aClass - die Klasse, deren Methode gefragt ist.
methodname - der gefragte Methodenname (ohne Signatur)
aParameterTypes - die Signatur der Methode
Returns:
die spezifischste Methode
Throws:
java.lang.SecurityException

getMostSpecificConstructor

protected static final java.lang.reflect.Constructor getMostSpecificConstructor(java.lang.Class aClass,
                                                                                java.lang.Class[] aParameterTypes)
                                                                         throws java.lang.SecurityException
Gibt den spezifischste Konstruktor zurück.

Parameters:
aClass - die Klasse, deren Methode gefragt ist.
aParameterTypes - die Signatur der Methode
Returns:
der spezifischste Konstruktor
Throws:
java.lang.SecurityException

isAssignable

public static final boolean isAssignable(java.lang.Class[] toTypes,
                                         java.lang.Class[] fromTypes)
Testet, ob ein Array von ParameterTypen in einen anderen gecastet werden kann.

Parameters:
fromTypes - ClassArray, der gecastet werden soll
toTypes - ClassArray, zu dem gecastet werden soll
Returns:
boolean, ob erfolgreich oder nicht.

getPrimitiveType

public static final java.lang.Class getPrimitiveType(java.lang.Class aClass)
Gibt, falls möglich, den Primitiv-Typ der Klasse zurück.

Parameters:
aClass - die Ausgangsklasse
Returns:
der Primitiv-Typ, fall vorhanden, sonst das ursprüngliche Klassenobject

getTypesString

protected static final java.lang.String getTypesString(java.lang.Class[] aTypes)
Gibt einen String für einen Array von Classes zurück.


getWriteMethods

public static final java.util.HashMap getWriteMethods(java.lang.Class beanClass)
Gibt die Setter einer Klasse zurueck. Alle Setter werden aus Performancegruenden gecachet. Methoden der Klasse Object werden ignoriert.

Parameters:
beanClass - Klasse
Returns:
HashMap mit den set-Methoden-Objekten der uebergebenen Klasse

getReadMethods

public static final java.util.HashMap getReadMethods(java.lang.Class beanClass)
Gibt die Getter einer Klasse zurueck. Alle Getter werden aus Performancegruenden gecachet. Methoden der Klasse Object werden ignoriert.

Parameters:
beanClass - Klasse
Returns:
HashMap mit den get-Methoden-Objekten der uebergebenen Klasse