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 check 过程中,Clojure 输出了:

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

除非我也给 x 添加类型提示。

2 个答案

0

评论者:bronsa

在开发 tools.analyzer 以及修改 reflector 的过程中,我无数次地查看过这个问题,发现似乎没有一种方式可以使这类“工作”而不破坏其他情况。

0
参考:https://clojure.atlassian.net/browse/CLJ-1687(由 michaelblume 报告)
...