【问题标题】:How to get Class of primitive types from Java JNI如何从 Java JNI 获取原始类型的类
【发布时间】:2013-04-08 12:40:47
【问题描述】:

这个问题与这个问题及其答案有关:

Does int.class equal Integer.class or Integer.TYPE in Java?

由于 int.class 不等于 Integer.class 我如何通过 JNI 在本机级别获取 int.class 类或其他原始类型?我需要指向 int.class 而不是 Integer.class 的 jclass 对象。

【问题讨论】:

    标签: java java-native-interface


    【解决方案1】:

    这个测试

        System.out.println(Integer.TYPE == int.class);
    

    打印true。也就是说,Integer.TYPE 是你想要的,你可以从本机代码中读取 Integer.TYPE 字段。或者从本机代码调用Class.getPrimitiveClass("int")

    【讨论】:

    • 看起来很有希望。我会尽力让你知道
    • 确实在本机级别读取 Integer.TYPE 的静态字段提供了请求的行为。
    【解决方案2】:

    在 JNI 中,原始值作为实际机器值传递。一个 int 作为一个 jint 被传递,该 jint 被 typedef'd 为一个 32 位有符号整数。

    http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/types.html#wp9502

    【讨论】:

    • 我已经知道了。请重新阅读我的问题。这不是我问的问题!我需要int.class的jclass。在java级别我会做:Class objectClass = int.class.
    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2022-11-09
    • 2020-12-05
    相关资源
    最近更新 更多