java - 从 clojure 调用带有可选 null 参数的 java 函数

标签 java clojure clojure-java-interop

我正在尝试弄清楚如何直接从 clojure 使用 LWJGL3。到目前为止,我发现的唯一障碍是一个有时需要参数为 null 的函数。 ,但它的类型是 long在指纹中。 有问题的具体函数是glfwCreateWindow​来自org.lwjgl.glfw.GLFW类(class)。 最后两个参数是 long ,但它们应该是 null当使用窗口模式时,对于第一个模式,或者不共享 gl 上下文,对于第二个模式。 问题是互操作调用检查函数的指纹,发现它应该是 long ,就这么过去了nil结果是 IllegalArgumentException .

我环顾四周,但似乎没有人解决这个特殊问题。这与零双关无关,因为参数有时应该为零。

这是我已经可以使用的代码:https://gist.github.com/Efimero/2c0af4ae3aeaf2c85136aa06ff077919

但它之所以有效,是因为默认的零值适合我的设置,但它们并不抽象。

当我经过nil时我希望该函数能够正常调用,但出现异常。

最佳答案

这没有道理。 long 在任何地方都不能为 null。这似乎是文档中的沟通不畅,包装的 C 或 C++ 库泄漏了。

我强烈猜测在文档显示 NULL 的地方传递 0 是正确的。

关于java - 从 clojure 调用带有可选 null 参数的 java 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56063261/

相关文章:

Clojure 规范 : how to validate either one or another map

Clojure 使用重载方法具体化 Java 接口(interface)

java - 在 JAXB 中解码 TreeSet

clojure 和 ^ :dynamic

java - 在 javafx 中设置舞台和场景的高度和宽度

validation - Clojure 中带有错误处理的管道

java - Clojure 中的 Hdfs 文件夹大小

clojure - 从 Clojure 调用一系列 Java 静态方法

java - Sedgewick & Wayne 的算法,练习 1.2.3

java - 如何检测 IMAPMessage 不是电子邮件而是任务或日历项目