什么是正确的'在Java对象中存储本机指针的方法? [英] What is the 'correct' way to store a native pointer inside a Java object?
问题描述
在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
.
这篇关于什么是正确的&#39;在Java对象中存储本机指针的方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!