ブログ::=(メモ|落書き)帳

一人前になれないプログラマのメモと落書き

ClojureでJavaプログラミング

ClojureJavaを呼び出すための方法を学んだので書き散らす。

クラスのインスタンス

 (new Classname args*)

Classnameにクラス名指定して、args*にコンストラクタに渡す引数をスペース区切りで指定する。
構文糖衣として次の形式があるのでそっちを使うのが一般的らしい。

(Classname. args*)

実際にはこんな感じで使う。

(StringBuilder. "hoge" )
-> #<StringBuilder hoge>

インスタンスのメソッド呼び出し

(.instanceMember instance args*)

instanceMemberにメソッド名、instanceにインスタンスを指す変数、args*にメソッドに渡す引数を指定する。

(.toUpperCase "fred")
-> "FRED"

Classのオブジェクトのメソッド呼び出し

(.instanceMember Classname args*)

インスタンスのメソッド呼び出しと同じで、instanceMemberにClassが持つメソッド指定して、Classnameに対象とするクラス名を指定する。

(.getName String)
-> "java.lang.String"

クラスメソッドの呼び出し

(Classname/staticMethod args*)

オブジェクトのメソッド呼び出しと異なり、"."は使わず"クラス名" + "/" + "メソッド名"になる。

(System/getProperty "java.vm.version")
-> "1.6.0_07-b06-57"

また、引数が不要な場合はカッコでくくる必要がなく次のようにかける。

Math/PI
-> 3.141592653589793

連続したメソッド呼び出し

".."マクロを使うとobject.getXXX().getYY().getZ()のような構文が簡単にかける。

(.. System (getProperties) (get "os.name"))

とりあえず、これだけ覚えればJavaの知識だけでClojureを使えるのでは?と思い書いた。
これでJavaな人(主に俺)がClojureの学習を諦めずに騙し騙し進めることができればと思う!

本ブログはAmazon.co.jpアソシエイトに参加しています