小编Fla*_*vio的帖子

如果GetStringUTFChars返回副本,您应该调用ReleaseStringUTFChars吗?

Rob Gordon的"Essential JNI:Java Native Interface"一书包含以下代码示例,用于将jstring转换为C字符串:

const char* utf_string;
jboolean isCopy;
utf_string = env->GetStringUTFChars(str, &isCopy);
/* ... use string ... */
if (isCopy == JNI_TRUE) {
    env->ReleaseStringUTFChars(str, utf_string);
}
Run Code Online (Sandbox Code Playgroud)

需要注意的是它只调用ReleaseStringUTFChars,如果isCopy是真实的.

但是Java Native Interface:Programmer's Guide and Specification(备用链接:)这本书http://192.9.162.55/docs/books/jni/html/objtypes.html#5161说:

无论GetStringChars将*isCopy设置为JNI_TRUE还是JNI_FALSE,都必须调用ReleaseString-Chars.ReleaseStringChars可以释放副本或取消实例,具体取决于GetStringChars是否返回了副本.

我认为这是戈登书中的一个错误是正确的吗?

java java-native-interface

71
推荐指数
1
解决办法
4万
查看次数

Java equal()和hashCode()基于不同的字段?

是否有任何情况下,一个类使用不同的类字段集来实现它equals()hashCode()方法是否有意义?

我问,因为我对Netbeans equals()hashCode()生成器感到困惑,在那里你被要求选择分别包含在每个方法中的字段.我总是最终为这两种方法选择相同的字段,但有没有这种情况不是正确的选择?

java netbeans

19
推荐指数
1
解决办法
4056
查看次数

如何从代理类中检索代理类?

我正在使用Hibernate和代理,我得到属于类的对象test.DBUser$$EnhancerByCGLIB$$40e99a2d.

是否有一个Hibernate方法test.DBUser从代理类中检索基类(在本例中)?我知道Hibernate.getClass(),但它需要一个Object,而我正在寻找一个接受输入的方法Class.

java hibernate

7
推荐指数
2
解决办法
4674
查看次数

为什么数据类型需要byte,char和short

我在JVM规范中读到数据类型byte,short和char在内部被视为int.那么,如果我们没有从它们的小尺寸中获益,为什么要使用这些数据呢?

java jvm

7
推荐指数
1
解决办法
576
查看次数

在cassandra存储时间范围

我正在寻找一种存储与时间范围相关的数据的好方法,以便以后能够有效地检索它.

每个数据条目都可以简化为(start time, end time, value).我需要稍后检索属于(x, y)范围内的所有条目.在SQL中,查询类似于

SELECT value FROM data WHERE starttime <= x AND endtime >= y

你能为Cassandra建议一个数据结构,这样我就能有效地执行这些查询吗?

cassandra

6
推荐指数
1
解决办法
1443
查看次数

关于接口重写方法的思考

我有以下代码,通用ITest接口由非通用ITestDouble接口扩展.该op方法被覆盖ITestDouble.

当我尝试列出所有方法时ITestDouble,我得到op两次.如何验证它们实际上是相同的方法?

public class Test {

    public static void main(String[] args) throws NoSuchMethodException {
        for (Method m : ITestDouble.class.getMethods()) {
            System.out.println(m.getDeclaringClass() + ": " + m + "(bridge: " + m.isBridge() + ")");
        }
    }

    public interface ITestDouble extends ITest<Double> {
        @Override
        public int op(Double value);

        @Override
        public void other();
    }

    public interface ITest<T extends Number> {
        public int op(T value);

        public void other();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

interface …
Run Code Online (Sandbox Code Playgroud)

java generics reflection overriding

6
推荐指数
1
解决办法
4666
查看次数

通过Invocation API获得的JNI对象引用:本地还是全局?

我正在使用JNI调用API,它在C程序中启动JVM; 在这种情况下,您将获得一个JNIEnv指针,该指针在您明确销毁JVM之前一直有效.本地/全球的区别是否仍然适用于此?由于JNIEnv始终保持在范围内,因此对新创建的对象的本地引用的含义是什么?

java-native-interface reference invocation

5
推荐指数
1
解决办法
656
查看次数