簡體   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