2013-03-06 11 views
13

Przepisuję niektóre metody natywne jako zwykłe metody Java.Czy natywne metody Java są równoważne statycznym metodom Java?

Czy natywne metody są efektywnie statyczne? Czy jest jakiś przypadek, w którym mają niejawny "ten" parametr?

Dzięki!

+1

Dlaczego używasz 'this'? Możesz podzielić metodę i zaimplementować część nie potrzebującą "tego". (Można zaimplementować najbardziej podstawowe funkcje w kodzie rodzimym) – shuangwhywhy

+2

Słowo kluczowe "statyczne" nadal ma zastosowanie do metod "rodzimych". Więc ... nie ... tylko statyczne są efektywnie statyczne. –

+0

Nie musisz się martwić o "to", ponieważ możesz swobodnie mieć dowolną instrukcję, której potrzebujesz w swojej funkcji bez niej w natywnej metodzie. – Francis

Odpowiedz

23

Metody macierzyste mogą być static lub inne niż static, podobnie jak zwykłe metody Java.

Non-static natywne metody otrzymują this odniesienia, static otrzymują zamiast tego odwołanie do klasy uświęcającej.

Od JNI Specification:

Native Method Argumenty

Interfejs wskaźnik JNI jest pierwszy argument do metod natywnych. Wskaźnik interfejsu JNI jest typu JNIEnv. Drugi argument różni się w zależności od tego, czy natywna metoda jest statyczna czy niestatyczna. Drugim argumentem dla niestatycznej natywnej metody jest odwołanie do obiektu. Drugi argument statycznej metody natywnej jest odniesieniem do jej klasy Java.