Java Reference
In-Depth Information
Auch hier gilt: c1 == c2 und c2 == c3 (und damit auch c1 == c3). Beachten Sie bitte, dass B
schon für den primitiven Datentyp byte vergeben ist, so dass für boolean Z verwendet wird.
Hat man ein Class-Objekt, kann man z. B. unterschiedliche Eigenscha en der damit
beschriebenen Klasse abfragen, z. B. ob die Klasse public ist, ob die Klasse fi nal ist und ob
es sich überhaupt um eine Klasse oder um eine Schnittstelle handelt. Auch kann man sich
von einem Class-Objekt die Basisklasse sowie die implementierten Schnittstellen geben
lassen. Sowohl die Basisklasse als auch die implementierten Schnittstellen werden wiede-
rum als Class-Objekte zurückgeliefert. Weiterhin können die Attribute, Konstruktoren und
Methoden einer Klasse erfragt werden.
2.1.2 Die Klasse Field
Mit Hilfe der Methoden getField, getDeclaredField, getFields und getDeclaredFields der
Klasse Class kann man Informationen über die Attribute einer Klasse abfragen. Ein Attribut
ist durch ein Objekt der Klasse Field repräsentiert, die ebenfalls eine der zu Refl ection gehö-
renden Klassen ist. Wie die Methodennamen vermuten lassen, haben die Methoden get-
Field und getDeclaredField den Rückgabetyp Field, weil sie genau ein Field-Objekt zurück-
geben, während getFields und getDeclaredFields mehrere Field-Objekte in Form eines
Field-Feldes (Field[]) zurückgeben. Bei den Methoden getField und getDeclaredField muss
man den Namen des Attributs bereits kennen; dieser wird als String-Argument angegeben.
Ein Field-Objekt wird zurückgeliefert, falls der Name des Attributs gültig war (andernfalls
wird eine Ausnahme geworfen). Die Methoden getFields und getDeclaredFields sind dage-
gen parameterlos. Die Methoden, die „Declared“ in ihrem Namen haben, beziehen sich nur
auf solche Attribute, die genau in der betrachteten Klasse defi niert wurden (geerbte Attri-
bute werden also nicht berücksichtigt), unabhängig von deren Sichtbarkeit (also auch ein-
schließlich nicht-öff entlicher Attribute). Im Gegensatz dazu beziehen sich die Methoden, in
deren Namen „Declared“ nicht vorkommt, auf alle, also auch auf die geerbten Attribute,
allerdings nur auf die öff entlichen.
So wie ein Class-Objekt eine Klasse repräsentiert, beschreibt ein Field-Objekt ein Attribut
einer Klasse. Dies sind einige wichtige Methoden der Klasse Field:
public Class<?> getType();
public Object get(Object obj) throws IllegalArgumentException,
IllegalAccessException;
public void set(Object obj, Object value)
throws IllegalArgumentException,
IllegalAccessException;
public void setAccessible(boolean flag) throws SecurityException;
public int getModifiers();
Über die Methode getType der Klasse Field kann man den Typ des Attributs erfragen (zur
Erinnerung: es gibt auch für primitive Datentypen Class-Objekte). Hat man ein Objekt der
Klasse, die das Attribut besitzt, das durch ein Field-Objekt repräsentiert wird, kann man
mit Hilfe der Methoden get und set den Attributwert lesen und ändern. Dazu muss natürlich
das Objekt, dessen Attributwert gelesen bzw. geändert werden soll, als Parameter angege-
ben werden; die Methoden get und set werden ja auf das Field-Objekt angewendet und nicht
auf das Objekt, dessen Attribut gelesen oder geändert werden soll. Beim Zugriff auf ein
 
Search WWH ::




Custom Search