【发布时间】:2025-12-12 02:55:01
【问题描述】:
我正在尝试解决 Clojure 中的反射警告,该警告似乎是由于对作为普通 Java 对象的函数返回值缺乏类型推断造成的。
演示该问题的简单示例代码:
(set! *warn-on-reflection* true)
(defn foo [#^Integer x] (+ 3 x))
(.equals (foo 2) (foo 2))
=> Reflection warning, NO_SOURCE_PATH:10 - call to equals can't be resolved.
true
解决此问题的最佳方法是什么?这可以通过类型提示来完成吗?
【问题讨论】:
-
您使用的是哪个版本的 Clojure?我在我的 Clojure v1.0 中尝试了您的示例,它似乎工作正常......
-
这是一个 clojure 1.2 版本。请注意,警告仅显示为 (set!warn-on-reflection true),这可能有所不同...。编辑问题以使其更清晰
-
是的,就是这样。我现在看到了。
标签: java reflection function clojure type-hinting