実行時のボクシングを避けるために、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 から値クラス (または役立つラッパー/ヘルパー) を使用するパターンはありますか?