`

Clojure 支持Java

 
阅读更多

调用Java类

 

调用Constructor、Method、Field

(new classname)

 

(new java.util.Random)

    java.util.Random@4f1ada

 

(def rnd (new java.util.Random))

  #'user/rnd

 

(. class-or-instance member-symbol & args)

(. class-or-instance (member-symbol & args))


(. rnd nextInt)
    -791474443

(. rnd nextInt 10)
    8

(import [& import-lists])
; import-list => (package-symbol & class-name-symbols)

(import '(java.util Random Locale)
'(java.text MessageFormat))
    nil

Syntactic Sugar


(new Random)
==
(Random.)
最终结果相同,语法方式不同

(Classname/membername);static field or method

(. Math PI)
 Math/PI

(System/currentTimeMillis)
    1226260030788

(. rnd nextInt)
==
(.nextInt rnd)
想同,语法方式不同

(doto class-or-inst & member-access-forms)

(doto (System/getProperties)
(.setProperty "name" "Stuart")
(.setProperty "favoriteColor" "blue"))


Java Clojure Sugared
new Widget("red") (new Widget "red") (Widget. "red")
Math.PI (. Math PI) Math/PI
System.currentTimeMillis() (. System currentTimeMillis (System/currentTimeMillis)
rnd.nextInt() (. rnd nextInt) (.nextInt rnd)
person.getAddress().getZipCode() (. (. person getAddress) getZipCode) (.. person getAddress getZipCode)








分享到:
评论

相关推荐

    nginx-clojure:用于嵌入Clojure或Java或Groovy程序的Nginx模块,通常是那些基于Ring的处理程序

    新功能:支持Java 9,10,11,12 Nginx工作进程之间的发布/订阅 基于共享内存的共享地图和基于Ring会话的共享地图 支持Sente,请参阅 支持WebSocket的按消息压缩扩展(PMCE) 用于将Nginx-Clojure嵌入到标准...

    Clojure可选类型系统TypedClojure.zip

    主要特性:从 Java 中保护你的 Clojure 程序,进行安全的互操作,正确的使用外部 Java 库。Typed Clojure 支持关键字映射的使用,类型检测器中包含有用的映射操作,包括关键字查找,添加或者移除关键字,合并映射...

    nio:Clojure对java.nio的支持

    o Clojure对java.nio的支持。 将clojure.java.io的输入流,输出流和复制功能扩展到java.nio类。 定义新的强制功能缓冲区,字节缓冲区,字符缓冲区,双缓冲区,浮点缓冲区,整数缓冲区,长缓冲区,短缓冲区,通道,可...

    java.jdbc:Clojure的JDBC(以前称为clojure.contrib.sql)

    clojure.java.jdbc 一个低层的Clojure包装器,用于基于JDBC的数据库访问。 该项目是“稳定的”(不再是“活动的”)。 实际上,它已被取代。 有关兼容的高级DSL和迁移库,请参阅。 以前称为clojure.contrib.sql ...

    动态对象:由Clojure支持的Java轻量级数据建模

    DynamicObject是一个库,它以一种惯用的方式以最少的样板为Java开发人员提供Clojure强大的数据建模功能。 它反映了这样一种信念,即应该是不变的,可以廉价地指定,可以使用的功能强大并且易于传达给其他过程。 浏览...

    neo4j-clj:Bolt的Clojure绑定Java Neo4j驱动程序,带有Joplin支持,用于管理数据库迁移

    neo4j-clj:Bolt的Clojure绑定Java Neo4j驱动程序,带有Joplin支持,用于管理数据库迁移

    Clojure编程乐趣

    第4部分包括第8章到第11章,分别介绍了宏、组合数据域代码、Clojure对Java的调用,以及并发编程等较为高级的话题。第5部分为第12章和第13章,探讨了Clojure的性能问题及其带给我们的思考。 《Clojure编程乐趣》适合...

    clojure-1.10.2-alpha2.jar

    Clojure的一大特色就是其并发机制,它支持不可变的数据结构(Clojure是来自于可持久化的数据结构)。Clojure还有一个特色是软件事务存储(Software Transactional Memory,STM),其支持用事务代替锁和互斥器来更新...

    clojure-ejml:Clojure 的高效 Java 矩阵库

    clojure-ejml 现在用于 Clojure 的高效 Java 矩阵库。... 该库为 EJML 库中的 DenseMatrix64F 类型实现了 Clojure (未来可能支持更多类型)。 user=> ( require 'clojure.core.matrix.impl.ejml) nil

    Dula-Boelens

    是一个模块,用于嵌入Clojure或Java或Groovy程序,通常是那些基于的处理程序。核心功能最新版本是v0.5.2,有关更多详细信息,请参见。 与兼容,并且显然支持那些基于Ring...支持Java 9,10,11,12 Nginx工作进程之间的

    捕鱼java源码-my-app:一个干净的Java/Clojure互操作项目

    Java/Clojure 库,旨在演示如何使用 Maven 设置 Java 互操作。 用法 这是一个完整的 Maven-first Clojure/Java 互操作应用程序。 它详细介绍了如何创建 Maven 应用程序、使用 clojure 代码丰富它、从 Java 调用 ...

    clojurephant:对Gradle的Clojure和Clojurescript支持

    Gradle插件提供对Clojure和ClojureScript语言的支持。 注意: clojurephant直到1.0.0才被认为是稳定的。 在此之前,次要版本(例如0.1.0至0.2.0)可能会包含重大更改。 Clojure功能 将Clojure代码(和/或AOT编译的...

    Functional Programming Patterns in Scala and Clojure

     所有迹象都显示,诞生50多年后,函数式编程却焕发了青春,越来越受到关注和青睐,从边缘地带步入了主流,除了Scala和Clojure这些新生函数式编程语言大行其道之外,Java等老牌面向对象的编程语言也开始支持匿名函数...

    nio.file:java.nio.file 的 Clojure 包装器

    支持的 Clojure 和 Java 版本nio.file针对 Clojure nio.file和 Java 1.7+。 Java 未来版本中的新功能将有条件地实现,以便您可以在 1.7 上继续使用此库。到期这是 alpha 质量的软件。 如果您的使用需要完整且无bug的...

    postal:Clojure电子邮件支持

    Clojure的互联网电子邮件库 postal是用于构造和发送符合RFC822的Internet电子邮件消息的库。 它包装了Jakarta Mail包,以提供消息和SMTP支持。 它本地支持sendmail。 支持STARTTLS和SSL。 平台类 任何可以运行Java的...

    clojure2d:Java2D包装器+创意编码支持功能(基于Processing和openFrameworks)

    Clojure2D是一个支持生成编码或故障的库。 它直接基于Java2D。 它仅是Clojure,没有ClojureScript版本。 文献资料 颜色/调色板/渐变 库包含大量命名的颜色,调色板和渐变。 有各种来源: , ,调色板, inigo ...

    Clojure-Reactive-Programming:ClojureReact性编程代码文件

    章节编号:所有免费/专有:所需的免费软件(带有版本):Leiningen 2.5.x下载到该软件的链接:( )硬件规格:与上述相同所需的操作系统:任何操作系统支持java 相关Clojure书籍 [掌握Clojure数据分析]( ) ...

    java二次开发源码-kalai:将Clojure转换为多种目标语言(Rust、C++、Java等)的源到源转译器

    java二次开发源码卡莱转换器 Kalai 是一个从 Clojure 到其他语言(Rust、Java、C++ 等)的源到源转译器。 Kalai 的目标是允许有用的算法被编码一次,然后自动提供给其他目标编程语言。 基本原理 支持的表格 Kalai ...

    cljc.java-time:java.time clojure clojurescript

    cljc.java-time 一个Clojure(Script)库,它通过kebab-case命名的vars镜像java.time api。 java.time api增加了: 每个实体类型的谓词函数: (cljc.java-time.extn.predicates/instant? x) 有关Instant上不受支持的...

    clj-logging-config:Clojure的简单日志记录配置

    幸运的是,Java中两个主要的日志记录“后端”(log4j和“ java.util.logging”)都支持编程配置,因此可以很容易地用Clojure程序员更轻松,更灵活地替换配置文件机制。 该库支持通过Clojure而不是Java属性文件和XML...

Global site tag (gtag.js) - Google Analytics