以下是一个最小示例,显示了错误
(defn f ^double []) (f) => NullPointerException
当我反汇编函数 f
时,我发现以下返回表达式
return null.doubleValue();
这发生在与Java互操作的场景中,被调用的Java方法没有返回值,但位于原始Clojure函数的返回位置。
编译器应在编译时检查null
。
另一个示例 - 完成以void返回值结尾的方法调用以类似方式失败
(defn f ^double [^SomeClassToAvoidRuntimeReflection obj, x, y] (.someMethod obj, x, y)) (f obj, x, y) => NullPointerException