请在 2024 状态 Clojure 调查问卷! 中分享您的想法。

欢迎!有关如何使用本站的信息,请参阅 关于 页面。

0
编译器

如果我创建了一个(链接:https://github.com/MichaelBlume/resolve-fail/blob/master/src/java/resolve_fail/Thing.java 文本:一个类),它包含两个方法,一个接受 (String, String),另一个接受 (String, Number),然后编写一个函数

(defn foo [x ^String y] (Thing/hello x y))

看起来显然我尝试调用第一个方法,而不是第二个。但在 lein 检查中,clojure 打印出

反射警告,resolve_fail/core.clj:6:3 - 在 resolve_fail.Thing 上调用静态方法 hello 无法解析(参数类型:未知,java.lang.String)。

除非我也对 x 进行类型提示。

2 答案

0

由 bronsa 评论

我在开发 tools.analyzer 和 hack reflector 的时候看过这个问题无数次,发现似乎没有一种方式可以使这种情况“工作”而又不影响其他情况。

0
参考文献: https://clojure.atlassian.net/browse/CLJ-1687(由 michaelblume 提交)
...