Clojure使用Java方法

    语法:

    例如:

    1. "HELLO,CLOJURE"
    2. (.indexOf "hello,clojure" "j")
    3. 9
    4. (. "hello,clojure" indexOf "j")
    5. (.. System (getProperties)(get "os.name"))
    6. "Mac OS X"
    7. (.substring "hello,clojure" 6)

    其实都是使用dot operator

    1. (. object-expr-ot-classname-symbol method-or-member-symob optional-args*)

    设置一个Java对象的共有成员变量

    语法如下:

    1. (set! (.member-variable object-variable) new-value)

    用/分开类和成员

    1. (java.lang.Math/abs -3)
    2. 3
    3. (java.lang.Math/pow 2 10)
    4. 1024.0

    创建一个对象

    两种方法

    1. (Class-name. arg1 arg2 ...)

    注意,类名后面有个.(a dot)这个最常用;

    还有就是

      将多个操作(多行代码)通过点号”.”链接在一起成为一句代码,我们称之为”链式编程风格”。 链式代码通常要求操作有返回值, 但对于很多操作大都是void型,什么也不返回,这样就很难链起来了.

      我们在Clojure中这样来写

      1. user=> (doto (java.util.Stack.)
      2. #_=> (.push "Hello!")
      3. #_=> )
      4. ["Hello!" "Clojure."]
      5. com.lightsword=> (doto (java.util.HashMap.)(.put "k" 1)(.put "v" 2))
      6. {"v" 2, "k" 1}

      import java package

      语法

      1. (import [package.name1 ClassName1 ClassName2]
      2. [package.name2 ClassName3 ClassName4])

      实例

      1. user=> (import [java.util Date Stack]
      2. #_=> [java.net Proxy URI])
      3. java.net.URI
      4. user=> (Date.)

      用如下形式: