我有一些 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
做什么。我认为在这种情况下,由于.context
is defined 返回了一个泛型类型T
,我想知道是否可以键入提示调用.context
. 我已经尝试分别在^java.nio.file.Path
to .context
、 and^Path
和^String
to.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.
在这种情况下我能做些什么吗?是因为它->
是一个宏并且其中有用于类型提示的特殊规则吗?