我有一个Java / Scala mix Maven项目。我需要重用一个Saddle方法make
,该方法具体定义为名为Index
的特征的一部分。如果这有任何帮助,则定义here方法。我尝试使用Index.make
或Index$class.make
从java调用该方法,但在这两种情况下都会出现error: cannot find symbol
编译错误。
有没有办法从Java调用具体的Trait方法?
答案 0 :(得分:5)
trait
在某种意义上类似于Java接口,它不是具体的构造函数。
来自Scala:
class IndexImpl extends Index[SomeParamtersHere] {}
val x = new ClassImpl
x.make(..)
或使用对象:
object Index extends Index {}
Index.make(..)
来自Java:
具体实现的特征将编译为适当的abstract class
。如果某些成员没有具体实施,则必须实施它们。
import org.saddle.Index
public class TraitImpl extends Index$class {
}
答案 1 :(得分:0)
好的,我找到了答案。像这样调用它只是因为Index trait已经有一个Index对象可用(我之前没有注意到):
Index$.MODULE$.make(rrule, startDate, endDate);