如何从JNI返回枚举 [英] how to return enum from JNI

查看:479
本文介绍了如何从JNI返回枚举的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  public class MyClass {

public enum STATUS {
ZERO,
ONE,
TWO
}

public native STATUS nativeGetStatus();

...

private STATUS state = nativeGetStatus(); //返回枚举
private STATUS state2 = nativeGetStatus(); //返回枚举

}

我想要本地方法nativeGetStatus返回此枚举值。



JNI返回整数并与java中的枚举值进行比较是一个选项,但是想知道是否可以通过jobject返回值并直接分配状态如果是,如何?

解决方案

当然可以这样做。枚举值是Enum类的公共静态字段,因此您可以使用这个官方手册编写代码。只需从JNI获取该字段并将其作为jobject返回。


In java I have:

public class MyClass{

    public enum STATUS {
        ZERO,
        ONE ,
        TWO
    }

    public native STATUS nativeGetStatus();

    ...

    private STATUS state = nativeGetStatus(); //returns enum
    private STATUS state2 = nativeGetStatus(); //returns enum 

}

I want native method 'nativeGetStatus' to return this enum value.

JNI returning integer and comparing with value of enum in java is an option, but was wondering is it possible to return value via jobject and assign it directly to state ? if yes how?

解决方案

Of course, you can do it. Enum values are public static fields of Enum class, so you can use this official manual to write the code. Just get the field from JNI and return it as jobject.

这篇关于如何从JNI返回枚举的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆