3

我正在尝试让 javafx2 与 Clojure 一起使用 - 在实现诸如 DoubleBinding 之类的抽象类时,我不确定在 Clojure 中等价的 super.bind(moo) 是什么。我正在实现的类可以在这里找到:http: //docs.oracle.com/javafx/2/api/index.html

(def moo (ObservableDoubleValue. ...))
(def foo (proxy [DoubleBinding] []
            (computeValue []
               (Math/sqrt (.getValue moo)))))



final ObservableDoubleValue moo = ...;   
DoubleBinding foo = new DoubleBinding() {
     {
         super.bind(moo);
     }

     @Override
     protected double computeValue() {
         return Math.sqrt(moo.getValue());
     }
 };
4

1 回答 1

1

根据代理文档,代理中的方法无法访问super...我建议您使用gen-class和使用它来生成类。super如果您将使用:exposes-methods指令公开它们,则可以访问它们的方法。就像是:

(gen-class :name MyDoubleBinding
           :extends DoubleBinding
           :exposes-methods {bind my-bind}
 ....
 )

然后-my-bind从你的构造函数调用......

请查看Clojure 网站上有关类生成的文档以获取更多详细信息gen-class

于 2012-07-27T05:46:30.427 回答