如何从Java调用具体的Scala特征方法?

Sky*_*ker 2 java scala traits

我有一个Java/Scala mix Maven项目.我需要重用一个Saddle方法make,该方法具体定义为被称为trait的一部分Index.如果这有任何帮助,则在定义该方法.我已经打过电话使用从Java该方法Index.makeIndex$class.make但在这两种情况下,我得到的error: cannot find symbol编译错误.

有没有办法从Java调用具体的Trait方法?

fla*_*ian 5

trait在某种意义上,A 类似于Java接口,它不是具体的构造函数.

来自斯卡拉:

class IndexImpl extends Index[SomeParamtersHere] {}
val x = new ClassImpl
x.make(..)
Run Code Online (Sandbox Code Playgroud)

或者使用一个对象:

object Index extends Index {}
Index.make(..)
Run Code Online (Sandbox Code Playgroud)

来自Java:

具体实现的特征将编译为适当的abstract class.如果某些成员没有具体实现,则必须实现它们.

import org.saddle.Index
public class TraitImpl extends Index$class {
}
Run Code Online (Sandbox Code Playgroud)