Clojure :调用摘要 class 的 java subclass

Clojure : call a java subclass of abstract class

我今天遇到了一个问题,因为我不知道如何调用扩展子类的 java class。我知道嵌套 class 有 $ 符号,但我迷路了。

为了更清楚,这里是 classes :

摘要class:

http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/fitting/AbstractCurveFitter.html

子class :

http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/fitting/SimpleCurveFitter.html

老实说,我忘记了很多关于 java 的事情,但我看到子 class 没有构造函数。问题是我必须使用子类。

这是代码

(defn apache-logistic-reg [data x0 lamb]
  (let [f (Logistic$Parametric.)
        start (def-start x0 lamb)
        fitter (.create SimpleCurveFitter. f start)
        points (double-array (extract-points data))]
    (.fit fitter points)))

问题是我无法调用 SimpleCurveFitter。因为它没有构造函数。并且 AbstractCurveFitter 没有 .create,如果我没记错的话 abstract classes 不能被转换。

如果我没记错的话,SimpleCurveFitter 的构造函数应该有它的抽象名称 class 但也许我错了。

我该怎么办?

谢谢你

您不需要在 SimpleCurveFitter 中调用构造函数,因为它提供了静态方法 create 来为您获取实例(您已经在尝试使用该实例)。只需对该方法进行静态方法调用即可获取实例:

(.create SimpleCurveFitter  f start) ;; No '.' after SimpleCurveFitter
(. SimpleCurveFitter create f start) ;; Alternate syntax
(SimpleCurveFitter/create   f start) ;; Most common syntax (pointed out by amalloy)