Java 调用带有隐式参数的 Scala 案例类?

标签 java scala

他,

如何从 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) { ... }
}

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);
  }
}

谢谢,

/纳米

最佳答案

您必须显式提供隐式。试试这个:

new Loggable.Run(new Integer(4711), ru, 0L, db);

我尝试使用 javap 查看签名是什么,在顶级案例类中,构造函数只有一个额外的参数。

编辑:使用您的代码(使用虚拟数据库类):

scala> :javap Loggable$Run
[snip]
    public Loggable$Run(java.lang.Integer, Loggable$RunUnit, long, DB);
}

关于Java 调用带有隐式参数的 Scala 案例类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7808821/

相关文章:

java - 多窗口处理

java - 每次推送消息时AWS SQS : Is it a way SQS call me consumer,

scala - Scala 中的多态方法 - 为什么允许这样做?

scala - 使用 Scalaz(或 Shapeless)为每个子类创建 Monoid

Scala Spark RDD 当前分区数

java - 从 RPG 调用 iSeries 上的远程 Java 程序

java - Hibernate JPA @Generator 注解编译错误

java - 自定义字体未应用

scala - 为什么可以在其定义范围之外看到对象的 protected 内部类?

scala - 在 Scala 中编写状态 monad