2013-03-06 18 views
13

Ich überschreibe einige native Methoden als reguläre Java-Methoden.Sind native Java-Methoden äquivalent zu statischen Java-Methoden?

Sind native Methoden effektiv statisch? Oder gibt es jemals einen Fall, in dem sie einen impliziten 'this' Parameter haben?

Danke!

+1

Warum verwenden Sie 'this'? Sie können die Methode teilen und implementieren das Teil nicht 'this '. (d. h. Sie können die grundlegendsten Funktionen in systemeigenem Code implementieren) – shuangwhywhy

+2

Das Schlüsselwort 'static' gilt immer noch für' native' Methoden. Also ... nein ... nur die statischen sind effektiv statisch. –

+0

Sie müssen sich nicht mit 'this' befassen, da Sie frei innerhalb Ihrer nativen Methode beliebige Anweisungen in Ihrer Funktion haben können. – Francis

Antwort

23

Native Methoden können wie normale Java-Methoden static oder nicht static sein.

Nicht-static native Methoden erhalten this Referenz, static, die stattdessen einen Verweis auf die Containing-Klasse erhalten.

Von JNI Specification:

native Methode Argumente

Die JNI-Schnittstelle-Zeiger ist das erste Argument zu nativen Methoden. Der JNI-Schnittstellenzeiger ist vom Typ JNIEnv. Das zweite Argument unterscheidet sich je nachdem, ob die native Methode statisch oder nicht statisch ist. Das zweite Argument einer nicht statischen nativen Methode ist eine Referenz auf das Objekt. Das zweite Argument einer statischen nativen Methode ist eine Referenz auf ihre Java-Klasse.

Verwandte Themen