Java Reference
In-Depth Information
Attribut wird die Sichtbarkeit des Attributs standardmäßig respektiert. Das heißt, wenn auf
ein privates Attribut von außerhalb der betreff enden Klasse zugegriff en wird, werfen die
Methoden get und set die Ausnahme IllegalAccessException. Entsprechendes gilt für Attri-
bute mit Standard- bzw. Protected-Sichtbarkeit. Wenn man will, kann man diesen Schutz-
mechanismus aber einfach abschalten: Wenn man setAccessible mit dem Parameter true
auf das Field-Objekt vor dem Zugriff anwendet, sind alle Zugriff e auf das Attribut möglich,
ganz gleich, welche Sichtbarkeit das Attribut besitzt.
Über die Methode getModifi ers kann neben der Sichtbarkeit abgefragt werden, welche Java-
Schlüsselwörter noch bei der Deklaration des Attributs verwendet wurden (z. B. transient).
2.1.3 Die Klasse Method
Ganz analog zu den Methoden für Attribute besitzt die Klasse Class die Methoden getMethod,
getDeclaredMethod, getMethods und getDeclaredMethods für Methoden. Ähnlich wie bei
den Attributen muss bei den Singularvarianten der Name einer Methode angeben werden
und der Rückgabetyp ist Method, während die Pluralvarianten parameterlos sind und ein
Method-Feld (Method[]) zurückliefern. Wegen der Konzepts des Überladens ist ein Name
für eine Methode nicht eindeutig. Deshalb müssen bei den Singularvarianten neben dem
Methodennamen auch die Typen der Parameter (in Form von Class<?>-Objekten) angege-
ben werden. Auch der Unterschied zwischen den Methoden mit und ohne „Declared“ im
Namen ist derselbe wie bei den Methoden für die Attribute. So wie ein Objekt der Klasse
Field für ein Attribut einer Klasse steht, repräsentiert ein Method-Objekt eine Methode. Die
Klasse Method besitzt u. a. die folgenden Methoden:
public Class<?>[] getParameterTypes();
public Class<?> getReturnType();
public Class<?>[] getExceptionTypes();
public Object invoke(Object obj, Object... args)
throws IllegalAccessException, IllegalArgumentException,
InvocationTargetException;
public void setAccessible(boolean flag) throws SecurityException;
public int getModifiers();
Wie aufgrund der Methodennamen erahnt werden kann, kann man mit getParameterTypes
die Typen der Parameter, mit getReturnType den Rückgabetyp und mit getExceptionTypes
die möglicherweise geworfenen Ausnahmen der Methode abfragen (die Parametertypen,
der Rückgabetyp und die Ausnahmen werden alle durch Class-Objekte repräsentiert, wobei
der Rückgabetyp void vom Class-Objekt void.class repräsentiert wird). Mit invoke kann die
Methode, für die das Method-Objekt steht, aufgerufen werden. Da invoke auf das Method-
Objekt angewendet wird und nicht auf das Zielobjekt, auf das die eigentliche Methode ange-
wendet werden soll, muss das Zielobjekt als Parameter angegeben werden (auch dies ist
ganz analog zu den Get- und Set-Methoden der Klasse Field). Weitere Parameter von invoke
sind die aktuellen Parameter des Methodenaufrufs, der durch Method beschrieben wird.
Diese Parameter müssen kompatibel sein zu den durch getParameterTypes beschriebenen
Typen. Wegen der Allgemeinheit können es beliebig viele Parameter des Typs Object sein.
Die variable Anzahl wird durch das Sprachkonzept Varargs von Java (notiert durch drei
Punkte) realisiert. Falls ein Parametertyp ein primitiver Datentyp ist, muss das Argument
 
Search WWH ::




Custom Search