0

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

4

0 に答える 0