我今天遇到问题,因为我不知道如何调用扩展子类的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的构造函数将具有其抽象类的名称,但也许我错了。
我该怎么办?
谢谢你
答案 0 :(得分:2)
您不需要在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)