Clojure使用Java方法
语法:
例如:
"HELLO,CLOJURE"
(.indexOf "hello,clojure" "j")
9
(. "hello,clojure" indexOf "j")
(.. System (getProperties)(get "os.name"))
"Mac OS X"
(.substring "hello,clojure" 6)
其实都是使用dot operator
(. object-expr-ot-classname-symbol method-or-member-symob optional-args*)
设置一个Java对象的共有成员变量
语法如下:
(set! (.member-variable object-variable) new-value)
用/分开类和成员
(java.lang.Math/abs -3)
3
(java.lang.Math/pow 2 10)
1024.0
创建一个对象
两种方法
(Class-name. arg1 arg2 ...)
注意,类名后面有个.(a dot)这个最常用;
还有就是
将多个操作(多行代码)通过点号”.”链接在一起成为一句代码,我们称之为”链式编程风格”。 链式代码通常要求操作有返回值, 但对于很多操作大都是void型,什么也不返回,这样就很难链起来了.
我们在Clojure中这样来写
user=> (doto (java.util.Stack.)
#_=> (.push "Hello!")
#_=> )
["Hello!" "Clojure."]
com.lightsword=> (doto (java.util.HashMap.)(.put "k" 1)(.put "v" 2))
{"v" 2, "k" 1}
import java package
语法
(import [package.name1 ClassName1 ClassName2]
[package.name2 ClassName3 ClassName4])
实例
user=> (import [java.util Date Stack]
#_=> [java.net Proxy URI])
java.net.URI
user=> (Date.)
用如下形式: