他,
如何从Java调用一个具有隐式参数的Scala案例类?
斯卡拉:
object Loggable {
case class RunUnit(val id : Integer) {
override def toString() = id.toString()
}
case class Run(
val id : Integer, val unit : RunUnit, val start : Long
)(implicit db : DB) { ... }
}
Run Code Online (Sandbox Code Playgroud)
Java的:
public class JTest {
public static void main(String[] args) {
// works fine
Loggable.RunUnit ru = new Loggable.RunUnit(4711);
// how to add the implicit parameter???
new Loggable.Run(new Integer(4711), ru, 0L);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
/纳米
您必须明确提供隐式.试试这个:
new Loggable.Run(new Integer(4711), ru, 0L, db);
Run Code Online (Sandbox Code Playgroud)
我尝试使用javap来查看签名是什么,并且在顶级案例类中,构造函数只有一个额外的参数.
编辑:使用您的代码(使用虚拟DB类):
scala> :javap Loggable$Run
[snip]
public Loggable$Run(java.lang.Integer, Loggable$RunUnit, long, DB);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3312 次 |
| 最近记录: |