9

型エイリアスが scala で次のように定義されているとします。

object Foo {
  type Bar = Option[String]
}

そのようなJavaコードでエイリアスを参照できないようです(単にシンボルが見つからないと不平を言います):

import Foo.*;

public class Cafebabe {
  void bar(Bar x) {
  //...
  }
}

静的インポートも試しました。

(より具体的には、変更できない Java リフレクション コードがあり、パラメーターの型を知る必要があり、Bar エイリアスをそれにフィードする必要があります)。

Scalaでラッパーを作成できることは知っています

class BarWrapper(value: Bar)

しかし、多分私は他の方法を見逃していますか?

4

1 に答える 1

14

型エイリアスは Scala コンパイラにのみ表示され、ジェネリック型と同様に、JVM クラス ファイルのどこにも表示されません。

Java を使用している場合Option[String]javacBarはScala コードで宣言した型エイリアスを知る方法がないため、エイリアスなしの型を使用することになります。使用する場所はどこでも( Java で) 使用Barするだけで、正常に動作するはずです。Option[String]scala.Option<String>

于 2012-12-02T21:58:34.200 に答える