我有一些 Clojure 代码试图通过几层 Java 代码进行互操作(在这种情况下,java.nio.Path通过java.nio.file.WatchEvent<?>:
(defn unroll-event
[^WatchEvent event]
{ :kind (.kind event)
:context (.context event)
:path (-> event .context .toAbsolutePath .toString)})
在这段代码中,我输入了 hinted event,所以我认为它应该能够弄清楚.context应该返回什么,因此能够弄清楚什么.toAbsolutePath和.toString做什么。我认为在这种情况下,由于.contextis defined 返回了一个泛型类型T,我想知道是否可以键入提示调用.context. 我已经尝试分别在^java.nio.file.Pathto .context、 and^Path和^Stringto.toAbsolutePath和之前添加toString,但我仍然收到警告:
Reflection warning, junkcode/core.clj:28 - reference to field toAbsolutePath can't be resolved.
Reflection warning, junkcode/core.clj:28 - reference to field toString can't be resolved.
在这种情况下我能做些什么吗?是因为它->是一个宏并且其中有用于类型提示的特殊规则吗?