4. Zugriff Auf Methoden

zurück zurück weiter weiter
 

4.1 Zugriff auf Methoden

Der Zugriff auf Methoden aus nativen Funktionen hat starke Ähnlichkeit mit dem Zugriff auf Variablen. Zuerst muß aus der erhaltenen Umgebung env und dem Objekt thisObj die Klasse des Objektes ermittelt werden. Danach wird, ähnlich der Variablenreferenz eine Methodenreferenz geholt. Im dritten Schritt wird die erhaltene Methodenreferenz in der Umgebung env auf das Objekt thisObj angewendet. Das Beispiel kann hier herunter geladen werden [kap04.zip].

Das folgende Beispiel zeigt den Zugriff auf eine Klassen Methode und eine Objekt Methode:

	jclass clazz;
	jmethodID public_mid;
	jmethodID private_static_mid;
	
	clazz = (*env)->GetObjectClass(env, thisObj);
	
	public_mid = (*env)->GetMethodID(env, clazz, "publicMethod", "()V");
	private_static_mid = (*env)->GetStaticMethodID(env,clazz,"privateStaticMethod","()V");
	
	(*env)->CallVoidMethod(env, thisObj, public_mid);
	(*env)->CallStaticVoidMethod(env, clazz, private_static_mid);
			
Die Funktion GetMethodID its ähnlich der GetFieldID Funktion. Sie liefert eine Referenz auf die gesuchte Methode. Diese Funktion gibt es auch als GetStaticMethodID für Klassen Methoden. Die Funktion CallVoidMethod bewirkt die Ausführung der Methode. Der Aufbau des Funktionsnamen ist wieder vom Typ Call<type>Method. Der angegebene Typ entspricht dem Rückgabetyp der Methode. Die Funktion hat außerdem eine Variable Parameterliste. Enthält die auszuführende Methode Parameter, so werden sie hinter der Methodenreferenz angegeben.

 

4.2 Public / Private

Auch bei Methodenaufrufen gibt es keinerlei Zugriffsprüfungen. Somit ist es auch hier möglich private Methoden andere Objekte aufzurufen.

 
zurück zurück weiter weiter
© 2001, Michael Bromm Version 1.0