使用:gen-class,extend及implements 来实现对类及接口的继承,注意interface 方法不需要使用:methods声明,需要声明的是新增方法,不需要使用expose。
特别要注意是在project.clj要增加aot
:aot [clojure-learn.JavaSimpleJob clojure_learn.gentest]
clj文件代码如下如
(ns java-interfaces.using-gen-class
(:gen-class
:name java-interfaces.using-gen-class
:implements [org.quartz.Job]
:methods [[customMethod [String] void]])) ;新增方法才需要定义,interface的不需要定义
(defn executor-fn []
(println "Hello World From gen-class!"))
(defn -execute [this context]
(executor-fn))
(defn -customMethod [this string]
(println string))
或者
(ns clojure-learn.JavaSimpleJob
(:gen-class
:name com.elastic.Simplejob
:implements [com.dangdang.ddframe.job.api.simple.SimpleJob]
; :methods [[execute [com.dangdang.ddframe.job.api.ShardingContext] void ]]
;:exposes-method [execute]
))
(:import com.dangdang.ddframe.job.api.ShardingContext
com.dangdang.ddframe.job.api.simple.SimpleJob
)
;)
(defn -execute [^com.dangdang.ddframe.job.api.simple.SimpleJob this shardingContext]
(println "clj a"))
(defn test []
(println "test"))