问题
如何在Clojure中使用Java的函数库
来源
平时不常用容易忘,记下来方便查询
内容
操作 | Clojure | Java |
---|---|---|
创建类的实例(无参数) | (ClassName.) | new ClassName() |
创建类的实例(有参数) | (ClassName. arg1 arg2 ...) | new ClassName(arg1, arg2, ...) |
调用实例方法(无参数) | (.methodName obj) | obj.methodName() |
调用实例方法(有参数) | (.methodName obj arg1 arg2 ...) | obj.methodName(arg1, arg2 ...) |
调用静态方法(无参数) | (ClassName/staticMethod) | ClassName.staticMethod() |
调用静态方法(有参数) | (ClassName/staticMethod arg1 arg2 ...) | ClassName.staticMethod(arg1, arg2 ...) |
访问静态属性 | ClassName/FIELD | ClassName.FIELD |
访问实例的属性 | (.field obj) | obj.field |
修改实例的属性 | (set! (.field obj) value) | obj.field = value |
引用Class | ClassName | ClassName.class |
补充
再补充一个宏,可以完成流畅接口的调用链
Clojure | Java |
---|---|
(.. "abcdefg" .toUpperCase (.subString 0 1)) | "abcdefg".toUpperCase().substring(0, 1) |