I have this Java class in a Jar file included as a dependency of an Scala program (like the Axis jar):
class MyClass {
private String[] someStrings;
public String[] getSomeStrings() { return someStrings; }
}
In my Scala program I have a Java API that return an instance of MyClass instance of MyClass to my program in Scala:
val myInstance = JavaAPI.getInstanceOfMyClass()
Then I try to use the someStrings array in my Scala program but it's null (let say that it wasn't properly initialized)
for(str <- myInstance.getSomeStrings()) ...
So this throws a NullPointerException.
I've found that in order to use it in the for comprehension I can wrap it into an Option so that it handles the NPE properly.
for(str <- Option[Array[String]](myInstance.getSomeStrings).getOrElse(Array[String]())
But that doesn't look OK to me.
Is there a way to create like an implicit method that takes that value even if it's null and wrap it into the Option, like:
implicit def wrapNull(a: Null): Option[Nothing] = None
implicit def wrapArray(a: Array[String]): Option[Array[String]] = Some(a)
So that when I do:
for(str <- myInstance.getSomeStrings())
I don't get the NPE