Clojure 文档翻译--概述及类库导入

概述

接下来的日子里我将不定时翻译如下内容

  • 如何去实例化java类
  • 如何调用java方法
  • 如何扩展java类关于代理
  • 如何去实现java接口类(implement)
  • 如何去生成java类关于gen-class
  • 其他有关交互操作的主题

本介绍教程覆盖到Clojure 1.5

Clojure 是设计成一个托管语言并与它的主机平台直接进行互操作(目前实现的有JVM,CLR等)
Clojure代码是编译成JVM字节码。对于Java对象的方法调用,Clojure 编译器将尝试发出与javac产生同样的字节码(译者注:”Glojure的编译器将尝试编译出来的字节码与javac一样”)。

在Clojure里是可能实现接口, 扩展和生成java类的。

Clojure 还提供了方便的函数和宏,使得Java库容易调用和比它在java代码里调用会更简洁。

Imports

Java类可以引用或使用他们完全限定的名称(FQNs)例如 java.util.Date或者导入在Clojure的命名空间使用 clojure.core/import和引用短名称

java.util.Date  ; ⇒ java.util.Date


(import java.util.Date)

Date ; => java.util.Date

ns宏支持导入:clojure (ns myservice.main (:import java.util.Date))

更多的关于ns宏介绍可以在这篇文章找到 Clojure namespaces.

自动导入java.lang.*

类从java.lang包是自动导入。例如,你可以使用StringMath没有明确的导入它们:

(defn http-uri?
  [^String uri]
  (.startsWith (.toLowerCase uri) "http"))

;译者注
(http-uri? "www.baidu.com") ; => false
(http-uri? "http://www.baidu.com") ; => true
;-------

(Math/round 0.7886)

内部(嵌套)类

在java里,类可以被嵌套在其他类里面。他们被称为内部类,按照惯例,分开他们与外部类中间使用一个美元符号($):

(import java.util.Map$Entry)

Map$Entry  ; ⇒ java.util.Map$Entry

;; 这个例子假定RabbitMQ java客户端是在java类路径里 this example assumes RabbitMQ Java client is on classpath
(import com.rabbitmq.client.AMQP$BasicProperties)

AMQP$BasicProperties  ; ⇒ com.rabbitmq.client.AMQP$BasicProperties

译者:Aey

注意如果你需要去使用两个类和一个或多个是内部类,他们全部需要分别导入。直到JVM是关联的,他们全是单独的类,他们是没有“导入层次结构”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值