Scala で java.lang.Object を特定の型にキャストするにはどうすればいいですか? 質問する

Scala で java.lang.Object を特定の型にキャストするにはどうすればいいですか? 質問する

私の知る限り、Javaでは

Object o = new String("abc")
String s = (String) o

しかし、これを Scala で書き直すにはどうすればよいでしょうか?

val o: java.lang.Object = new java.lang.String("abc")
val s: String = // ??

私が使用したい Java ライブラリは、java.lang.Objectより具体的な型 (このライブラリでも定義されています) にキャストする必要がある戻り値を返します。Java の例は、私の最初の例とまったく同じように実行されますが、source: TargetTypeJava の代わりにScala を使用するだけでは(TargetType)source機能しません。

ベストアンサー1

もし、あんたが絶対にしなければならないたとえば、Java ライブラリとの互換性を保つために、以下を使用できます。

val s: String = o.asInstanceOf[String]

ただし、一般的には、asInstanceOfコードの臭いがあり、避けるべきです。

おすすめ記事