在JNI中访问超类

时间:2012-03-02 02:19:28

标签: java inheritance java-native-interface

我有一个基类存储最终从JNI设置的指针

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

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

然后将传递给NativeInterface的特定Struct:somefunc,需要能够访问它的ptr字段。我的问题是如何将SomeStruct的超级传递给本机接口?应该是这样还是演员?

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

2 个答案:

答案 0 :(得分:0)

只需执行常规步骤:通过Struct类上的JNI内省获取字段ID,然后获取/设置其值,将SomeStruct实例作为对象参数。

答案 1 :(得分:0)

这里不需要演员或任何需要使用super。只需传递thisSomeStruct继承自Struct,就可以将其传递给任何接受Struct的函数。

NativeInterface.somefunc(this);