Ein Parameter repräsentiert einen Parameter einer Methode oder eines Konstruktors. Zu den neuen Methoden zählen:
final class java.lang.reflect.Parameter
implements AnnotatedElement
§ String getName()
§ int getModifiers()
§ boolean isNamePresent()
§ boolean isImplicit()
§ boolean isSynthetic()
§ boolean isVarArgs()
§ Type getParameterizedType()
§ Executable getDeclaringExecutable()
§ Class<?> getType()
§ AnnotatedType getAnnotatedType()
Die in Java 8 eingeführte finale Klasse Parameter implementiert AnnotatedElement, da seit Java 8 auch Parametervariablen annotiert sein können; die Methoden sind in der oberen Aufzählung nicht noch einmal aufgezählt.
Um an einen Parameter zu gelangen nutzen wir getParameters() auf einem Executable, also konkret Constructor, Method.
abstract class java.lang.reflect.Executable<T>
extends AccessibleObject
implements Member, GenericDeclaration
§ public Parameter[] getParameters()
Falls etwas beim Erfragen schief geht, gibt es eine MalformedParametersException, eine ungeprüfte Ausnahme.
Beispiel:
Constructor<?>[] constructors = Point.class.getDeclaredConstructors();
for ( Constructor<?> constructor : constructors ) {
System.out.println( constructor );
for ( Parameter param : constructor.getParameters() )
System.out.printf( “ %s %s%n“, param.getType(), param.getName() );
}
Mit der Ausgabe (an der abzusehen ist, dass die Parameternamen für die JVM nicht bekannt sind):
public java.awt.Point(int,int)
int arg0
int arg1
public java.awt.Point(java.awt.Point)
class java.awt.Point arg0
public java.awt.Point()