ClojureでJavaプログラミング
ClojureでJavaを呼び出すための方法を学んだので書き散らす。
クラスのインスタンス化
(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