2013-03-06 16 views
13

Sto riscrivendo alcuni metodi nativi come normali metodi Java.I metodi Java nativi equivalgono ai metodi Java statici?

I metodi nativi sono effettivamente statici? O c'è mai un caso in cui hanno un implicito "questo" parametro?

Grazie!

+1

Perché stai usando "questo"? È possibile dividere il metodo e implementare la parte non è necessario "questo". (Ad esempio, è possibile implementare le funzioni di base nel codice nativo) – shuangwhywhy

+2

La parola chiave 'static' si applica ancora ai metodi' native'. Quindi ... no ... solo quelli statici sono effettivamente statici. –

+0

Non devi preoccuparti di questo perché puoi liberamente avere qualsiasi istruzione tu voglia nella tua funzione senza di essa all'interno di un metodo nativo. – Francis

risposta

23

I metodi nativi possono essere static o non static, proprio come i normali metodi Java.

Non- static metodi nativi ricevono this riferimento, static quelli ricevono invece un riferimento alla classe di contenimento.

Da JNI Specification:

metodo nativo Argomenti

Il puntatore di interfaccia JNI è il primo argomento di metodi nativi. Il puntatore all'interfaccia JNI è di tipo JNIEnv. Il secondo argomento varia a seconda che il metodo nativo sia statico o non statico. Il secondo argomento di un metodo nativo non statico è un riferimento all'oggetto. Il secondo argomento di un metodo nativo statico è un riferimento alla sua classe Java.