繁体   English   中英

从Clojure调用java函数

[英]Calling java functions from Clojure

我可以在clojure中使用(.toUpperCase“GOOD”),因为“GOOD”是java字符串,而java字符串具有toUpperCase方法。

我也可以使用clojure中的(java.io.File / separator)作为调用java函数的方法。

但是,为什么我不能调用(java.lang / Object wait 3)或(java.lang.System / println“hi”)?

  • 我们不能使用Clojure中的所有java函数吗?
  • 如果没有,是否有任何规则可以打电话给他们? 如果是这样,这些功能的参考在哪里?

您可以使用Clojure中的所有Java函数。 查看Clojure Java互操作的精彩页面。

特别是,你只需要根据你正在处理的Java构造类型来获得正确的语法,例如在java.lang.System上对静态成员“out”执行println方法:

(.println (System/out) "hi")

正如早先的海报所指出的那样,你给出的两个例子只是一点点:

(.wait (java.lang.Object.) 3) ;; this actually throws an IllegalMonitorStateException

(.println java.lang.System/out "hi")

应该管用!

首先, Object.wait()函数不是静态函数,您应该使用:

(.wait (java.lang.Object.) 3)

其次,在获得锁之后应该调用Object.wait()函数。 否则,它将抛出IllegalMonitorStateException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM