我在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中的值类(或任何有用的包装器/帮助器)?