gpt4 book ai didi

java - 从 const 方法调用 JNI 函数

转载 作者:太空狗 更新时间:2023-10-29 16:34:33 24 4
gpt4 key购买 nike

我想这样调用我的 C++ 类的 Java 绑定(bind):

std::streamsize DataStreamJava::length() const {
jmethodID m = jni()->GetMethodID(j_dataStream_class_,
"length", "()J");
return jni()->CallLongMethod(j_dataStream_global_, m);
}

但这是不可能的,因为这些 JNI 调用不是常量。

JNI 是否为常量方法提供常量函数?删除 const 属性是解决此问题的唯一方法吗?

最佳答案

我认为简短的回答是“不”。这些 JNI 函数没有 const 版本。下一个问题可能是“应该有吗?”我认为答案也是“不”。 JNI 函数都可能改变 JVM 的状态。 (至少它们都有能力在 JVM 中创建错误,从而改变其内部状态。)我认为 实际上 违反了您的 const 属性隐含的契约(Contract) -这不仅仅是 JNI 头文件中的一些设计缺陷。

关于java - 从 const 方法调用 JNI 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32003475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com