Scalaプログラム(Axis jarなど)の依存関係として含まれているJarファイルにこのJavaクラスがあります。
class MyClass {
private String[] someStrings;
public String[] getSomeStrings() { return someStrings; }
}
私のScalaプログラムには、MyClassのMyClassインスタンスのインスタンスをScalaのプログラムに返すJavaAPIがあります。
val myInstance = JavaAPI.getInstanceOfMyClass()
次に、ScalaプログラムでsomeStrings配列を使用しようとしましたが、 nullです(正しく初期化されていなかったとしましょう)
for(str <- myInstance.getSomeStrings()) ...
したがって、これはNullPointerExceptionをスローします。
理解のためにそれを使用するために、NPEを適切に処理するようにオプションにラップできることがわかりました。
for(str <- Option[Array[String]](myInstance.getSomeStrings).getOrElse(Array[String]())
しかし、それは私にはうまく見えません。
nullであってもその値を取り、それをOptionにラップする暗黙のメソッドのように作成する方法はありますか?
implicit def wrapNull(a: Null): Option[Nothing] = None
implicit def wrapArray(a: Array[String]): Option[Array[String]] = Some(a)
だから私がするとき:
for(str <- myInstance.getSomeStrings())
NPEを取得できません
前もって感謝します!