Clojure:调用抽象类的java子类

Clojure:调用抽象类的java子类,java,clojure,subclass,Java,Clojure,Subclass,今天我遇到了一个问题,因为我不知道如何调用扩展子类的java类。我知道嵌套类有$符号,但在这里我迷路了 更清楚地说,以下是类: 抽象类: 子类: 老实说,我忘记了很多关于java的事情,但是我看到子类没有构造函数。问题是我必须使用子类 这是密码 (defn apache-logistic-reg [data x0 lamb] (let [f (Logistic$Parametric.) start (def-start x0 lamb) fitter (.

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

更清楚地说,以下是类:

抽象类:

子类:

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

这是密码

(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,而且如果我记得很清楚的话,抽象类不能被强制转换

如果我记得清楚的话,SimpleCurveFitter的构造函数应该有它的抽象类的名称,但也许我错了

我该怎么办


感谢您

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

(.create SimpleCurveFitter f start);;在SimpleCurveFitter之后没有“.”
(.SimpleCurveFitter创建f start);;交替语法
(SimpleCurveFitter/create f start);;最常见的语法(由amalloy指出)

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

(.create SimpleCurveFitter f start);;在SimpleCurveFitter之后没有“.”
(.SimpleCurveFitter创建f start);;交替语法
(SimpleCurveFitter/create f start);;最常见的语法(由amalloy指出)

非常感谢,最后是“简单”的字符串等,我想象更难的操作!这里的第三种语法是迄今为止用于调用静态方法的最典型的语法。非常感谢,最后是“简单”的,比如字符串等等,我想象了更难的操作!这里的第三种语法是迄今为止用于调用静态方法的最典型语法。