什么是正确的'在Java对象中存储本机指针的方法? [英] What is the 'correct' way to store a native pointer inside a Java object?

查看:43
本文介绍了什么是正确的'在Java对象中存储本机指针的方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Java对象中存储本机指针的正确"方法是什么?

What is the 'correct' way to store a native pointer inside a Java object?

如果我碰巧知道本机指针的大小是< = 32位,则可以将其视为Java int ,如果我知道,则可以将其视为Java long 碰巧知道本机指针的大小是< = 64位.但是,有没有更好或更干净的方法呢?

I could treat the pointer as a Java int, if I happen to know that native pointers are <= 32 bits in size, or a Java long if I happen to know that native pointers are <= 64 bits in size. But is there a better or cleaner way to do this?

编辑:我 不想从JNI函数返回本机指针.我宁愿返回一个代表本地资源的Java对象.但是,我返回的Java对象必须具有一个包含指针的字段,这使我回到了最初的问题.

Edit: Returning a native pointer from a JNI function is exactly what I don't want to do. I would rather return a Java object that represents the native resource. However, the Java object that I return must presumably have a field containing a pointer, which brings me back to the original question.

或者,JNI函数是否有更好的方法返回对本机资源的引用?

Or, alternatively, is there some better way for a JNI function to return a reference to a native resource?

推荐答案

IIRC, java.util.zip java.nio 都使用 long .

IIRC, both java.util.zip and java.nio just use long.

这篇关于什么是正确的&amp;#39;在Java对象中存储本机指针的方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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