4

我正在阅读 Programming Clojure 并在 src/examples/gulp.clj 遇到以下代码。我无法理解 StringBuilder、FileInputStream 等之后的点是什么意思 -

(ns examples.gulp
  (:import (java.io FileInputStream InputStreamReader BufferedReader)))
(defn gulp [src]
  (let [sb (StringBuilder.)]
    (with-open [reader (-> src
                         FileInputStream.
                         InputStreamReader.
                         BufferedReader.)]
      (loop [c (.read reader)]
        (if (neg? c)
          (str sb)
          (do
            (.append sb (char c))
            (recur (.read reader))))))))

任何人都可以请阐明一些光。

4

1 回答 1

13

类名后面的点只是调用类的构造函数的特殊语法。

(macroexpand '(StringBuilder. "foo"))
;=> (new StringBuilder "foo") 

阅读http://clojure.org/java_interop

于 2013-03-04T12:18:41.913 回答