我在 Scala 中使用值类来避免在运行时装箱。
例如。:
trait Service {
def getThing(thingId: ThingId): Thing
}
final case class ThingId(value: Long) extends AnyVal
但是,我使用的是 Java 代码中的相同值类:
interface JavaService {
Thing getThing(ThingId thingId);
}
这不起作用,因为ThingId
实际上编译为 Long:
JavaService.java:[2,19] error:
incompatible types: ThingId cannot be converted to long
是否有使用 Java 中的值类(或任何有用的包装器/帮助器)的模式?