加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JNI通过引用传递,是否可能?

发布时间:2020-12-15 08:31:00 所属栏目:Java 来源:网络整理
导读:我有一个 Java程序调用C程序来验证用户.我希望程序返回true或false,如果为false,则更新指向错误消息变量的指针,然后我可以从Java程序中获取该指针. 另一个探索: 本机方法看起来像这样: public native String takeInfo(String nt_domain,String nt_id,Strin
我有一个 Java程序调用C程序来验证用户.我希望程序返回true或false,如果为false,则更新指向错误消息变量的指针,然后我可以从Java程序中获取该指针.

另一个探索:

本机方法看起来像这样:

public native String takeInfo(String nt_domain,String nt_id,String nt_idca,String nt_password,String& error);

我会在这里称之为方法:

boolean canLogin = takeInfo(domain,userID,“”,userPass,String& error)

然后在我的C程序中,我将检查用户是否经过身份验证并将其存储在布尔值中,则获取错误消息并使用它更新&错误.然后将该布尔值返回到我的Java程序,在那里我可以显示错误或让用户通过.

有任何想法吗?

最初我有它所以程序将返回“true”或错误消息,作为一个jstring,但我的老板希望它如上所述.

解决方法

有一种常见的技术可以通过在参数中使用对象数组来模拟附加的out参数.

例如.

public native String takeInfo(String nt_domain,String[] error);

boolean canLogin = takeInfo(domain,"",error);
if(!canLogin){
   String message = error[0];
}

返回结果对象还有另一种方法

class static TakeInfoResult{
   boolean canLogon;
   String error;
}
TakeInfoResult object = takeInfo(domain,userPass);

在第二种情况下,您需要在JNI层中编程更多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读