2013-03-06 2 views
13

Я переписываю некоторые собственные методы как обычные методы Java.Являются ли родные методы Java эквивалентными статическим методам Java?

Являются ли нативные методы эффективными статическими? Или существует ли когда-либо случай, когда у них есть неявный «этот» параметр?

Спасибо!

+1

Почему вы используете 'this'? Вы можете разделить метод и реализовать часть не нужно 'this'. (т. е. вы можете реализовать самые основные функции в собственном коде) – shuangwhywhy

+2

Ключевое слово 'static' по-прежнему применяется к методам' native'. Итак ... нет ... только статические действительно статичны. –

+0

Вам не обязательно относиться к 'this', так как вы можете свободно иметь любую инструкцию, которую хотите в своей функции, без нее внутри собственного метода. – Francis

ответ

23

Родные методы могут быть static или не static, как обычные методы Java.

Non-static родные методы получают this ссылки, static получают вместо этого ссылку на containg class.

От JNI Specification:

Native Method Аргументы

Указатель интерфейса JNI является первым аргументом для собственных методов. Указатель интерфейса JNI имеет тип JNIEnv. Второй аргумент отличается в зависимости от того, является ли нативный метод статическим или нестатическим. Второй аргумент для нестатического нативного метода - это ссылка на объект. Второй аргумент статического встроенного метода - ссылка на его класс Java.

Смежные вопросы