JavaCPP ValueGetter 与 MemberGetter
JavaCPP ValueGetter vs MemberGetter
@MemberGetter
and @ValueGetter
annotations in JavaCPP
有什么区别?
它们的用例是什么?
我有两个常量的 C 头文件
static const int TRANSPOSE = 0;
static const int NO_TRANSPOSE = 1;
在 Java 端获取它们的值的首选方法是什么?
更新:
我已阅读 JavaCPP 生成器源代码 code, done some experiments and ended up doing this in both ways and both are working. Here's java sample (see our github project 了解更多)。
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;
}
这似乎是一个比较小的开源项目。我不希望您在这里询问此类问题时会得到很多反馈。因此,帮助您解决问题的答案是:使用不同的研究策略:
- 首先是开源。只需转到 github 并克隆该存储库并开始使用它。阅读源代码,搜索那些注释,并尝试是否可以找到它们的用法。
- 只需联系该产品周围的社区即可;最简单的方法...只需写一封电子邮件到 JavaCPP 的主要 contributor。
长话短说:答案是 - 您需要更多 "energetic" 才能得到答案。
对于全局变量和宏,没有太大区别。在 类 的情况下,一对本机 get()
和 put()
方法默认值 getter 和 setter,映射到 []
指针的运算符,通常用于访问数组的元素。其他 getter 和 setter 对用于访问字段,如 native int n(); native void n(int n)
默认是成员变量 getter 和 setter 成员变量 int n
。 @ValueGetter
、@ValueSetter
、@MemberGetter
、@MemberSetter
和 @Function
注释可用于更改默认行为并为方法使用其他名称。
@MemberGetter
and @ValueGetter
annotations in JavaCPP
有什么区别?
它们的用例是什么?
我有两个常量的 C 头文件
static const int TRANSPOSE = 0;
static const int NO_TRANSPOSE = 1;
在 Java 端获取它们的值的首选方法是什么?
更新:
我已阅读 JavaCPP 生成器源代码 code, done some experiments and ended up doing this in both ways and both are working. Here's java sample (see our github project 了解更多)。
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;
}
这似乎是一个比较小的开源项目。我不希望您在这里询问此类问题时会得到很多反馈。因此,帮助您解决问题的答案是:使用不同的研究策略:
- 首先是开源。只需转到 github 并克隆该存储库并开始使用它。阅读源代码,搜索那些注释,并尝试是否可以找到它们的用法。
- 只需联系该产品周围的社区即可;最简单的方法...只需写一封电子邮件到 JavaCPP 的主要 contributor。
长话短说:答案是 - 您需要更多 "energetic" 才能得到答案。
对于全局变量和宏,没有太大区别。在 类 的情况下,一对本机 get()
和 put()
方法默认值 getter 和 setter,映射到 []
指针的运算符,通常用于访问数组的元素。其他 getter 和 setter 对用于访问字段,如 native int n(); native void n(int n)
默认是成员变量 getter 和 setter 成员变量 int n
。 @ValueGetter
、@ValueSetter
、@MemberGetter
、@MemberSetter
和 @Function
注释可用于更改默认行为并为方法使用其他名称。