【发布时间】:2016-11-16 00:41:49
【问题描述】:
我正在尝试使用 clojure 来构建一个 java 库。我希望该类符合 java 规范,这意味着我希望构建器模式是最直观的。使用它的库会这样称呼它
String actualHtml =
builder
.setTitle("Pizza Time")
.setProperty(n)
.setProperty(n+1)
.build();
通过一个奇怪的编译步骤,我可以通过擦除每个方法中的返回值,编译,然后添加它们并再次编译来编译它......但我想知道是否有更标准的方法。
(ns scorecard.core
(:gen-class
:name scorecard.Builder
:state state
:init init
:methods [[setTitle [String] scorecard.Builder ]
[[setProperty [String] scorecard.Builder ]
[build [] String ]]))
以上将失败
Exception in thread "main" java.lang.ClassNotFoundException: scorecard.Builder, compiling:(scorecard/core.clj:1:1)
如果我删除返回值编译,然后再次编译它可以工作。我尝试添加预编译配置文件,但依赖项与 :gen-class 方法位于同一文件中。
:profiles { :precomp {
:source-paths ["src/scorecard"]
:aot [parser.ast] } })
有没有一种方法可以声明一个返回值,该返回值将返回不会引发错误的类本身?
【问题讨论】: