@MemberGetter和@ValueGetter注释在JavaCPP中的区别是什么?
他们的用例是什么?
我有两个常量的C头文件
static const int TRANSPOSE = 0;
static const int NO_TRANSPOSE = 1;在Java端获取它们的值的预先方法是什么?
更新:
我读过JavaCPP生成器源代码代码,做了一些实验,最后用两种方式完成了这一工作,而且都在工作。下面是java示例(更多信息请参见我们的github项目 )。
private static native @MemberGetter @Const int TRANSPOSE();
private static native @ValueGetter @Const int NO_TRANSPOSE();但我还是不知道有什么区别。这两个注释产生了相同的C++代码。
JNIEXPORT jint JNICALL Java_com_rtbhouse_model_natives_NeuralNetworkNativeOps_TRANSPOSE(JNIEnv* env, jclass cls) {
jint rarg = 0;
const int rvalue = (const int)TRANSPOSE;
rarg = (jint)rvalue;
return rarg;
}
JNIEXPORT jint JNICALL Java_com_rtbhouse_model_natives_NeuralNetworkNativeOps_NO_1TRANSPOSE(JNIEnv* env, jclass cls) {
jint rarg = 0;
const int rvalue = (const int)NO_TRANSPOSE;
rarg = (jint)rvalue;
return rarg;
}发布于 2016-11-05 04:15:28
对于全局变量和宏,没有太大的区别。对于类,一对本机get()和put()方法默认为值getter和setter,映射到指针的[]运算符,通常用于访问数组的元素。其他getter和setter对用于访问字段,如native int n(); native void n(int n)默认为成员变量int n的成员getter和setter。@ValueGetter、@ValueSetter、@MemberGetter、@MemberSetter和@Function注释可用于更改默认行为并为方法使用其他名称。
https://stackoverflow.com/questions/40418052
复制相似问题