clojure gen java class

使用: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"))

猜你喜欢

转载自blog.csdn.net/weixin_40455124/article/details/112647373
gen