Доступ к суперклассу в JNI - PullRequest
0 голосов
/ 02 марта 2012

У меня есть следующая установка с базовым классом, хранящим указатель, в конечном итоге установленный из JNI

class Struct {
    private long ptr;
    long c_ptr() { return ptr; }
}

class NativeInterface {
    static native void somefunc(Struct st);
    ...
}

Затем определенная структура, которая будет передана NativeInterface: somefunc, который должен иметь возможность доступа к нему.ptr поле.У меня вопрос как передать супер из SomeStruct на родной интерфейс?Это должно быть так или с актерами?

class SomeStruct extends Struct {
    void somefunc() {
        NativeInterface.somefunc(super);
    }
}

Ответы [ 2 ]

0 голосов
/ 02 марта 2012

Нет необходимости в приведении или необходимости использовать super здесь.Просто передайте this, так как SomeStruct наследуется от Struct, его можно передать любой функции, которая принимает Struct.

NativeInterface.somefunc(this);
0 голосов
/ 02 марта 2012

Просто выполните обычные шаги: получите идентификатор поля посредством интроспекции JNI в классе Struct, затем получите / установите его значение, предоставив экземпляр SomeStruct в качестве аргумента объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...