草庐IT

BoxedUnit

全部标签

java - 这真的是从 Java 将 void 函数传递给 Scala 方法的方法吗?

我最近一直在玩Scala/Java互操作,特别是从Java(7)调用Scala(2.10.4)代码。这比我预期的要愉快,但有几件事让我感到困惑。例如,在scala.runtime中,我有一个不错的AbstractFunction抽象类集合。但是对于没有返回值的方法,我没有看到任何东西。例如,假设我有以下Scala代码:classMyClass(name:String){defSayWhat(say_fn:String=>Unit)=say_fn(name)}我的理解是Java的void或多或少是Scala的Unit,所以我可以用下面的Java匿名类传递类似lambda的东西:impor

Java 与 Scala 泛型和装箱的互操作性问题

假设我有这个Scala特性:traitUnitThingy{defx():Unit}提供Java实现非常简单:importscala.runtime.BoxedUnit;publicclassJUnitThingyimplementsUnitThingy{publicvoidx(){return;}}现在让我们从一个通用特征开始:traitFoo[A]{defx():A}traitBarextendsFoo[Unit]上面的方法行不通,因为x返回的单元现在是装箱的,但解决方法很简单:importscala.runtime.BoxedUnit;publicclassJBarimpleme