Merge pull request #15430 from spray/w/add-japi-Option-getOrElse
+act #15383 add strict japi.Option.getOrElse to simplify working with options from Java
This commit is contained in:
commit
e22711107b
2 changed files with 10 additions and 0 deletions
|
|
@ -17,6 +17,7 @@ public class JavaAPITestBase {
|
||||||
assertFalse(o.isEmpty());
|
assertFalse(o.isEmpty());
|
||||||
assertTrue(o.isDefined());
|
assertTrue(o.isDefined());
|
||||||
assertEquals("abc", o.get());
|
assertEquals("abc", o.get());
|
||||||
|
assertEquals("abc", o.getOrElse("other"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -24,10 +25,12 @@ public class JavaAPITestBase {
|
||||||
Option<String> o1 = Option.none();
|
Option<String> o1 = Option.none();
|
||||||
assertTrue(o1.isEmpty());
|
assertTrue(o1.isEmpty());
|
||||||
assertFalse(o1.isDefined());
|
assertFalse(o1.isDefined());
|
||||||
|
assertEquals("other", o1.getOrElse("other"));
|
||||||
|
|
||||||
Option<Float> o2 = Option.none();
|
Option<Float> o2 = Option.none();
|
||||||
assertTrue(o2.isEmpty());
|
assertTrue(o2.isEmpty());
|
||||||
assertFalse(o2.isDefined());
|
assertFalse(o2.isDefined());
|
||||||
|
assertEquals("other", o1.getOrElse("other"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,11 @@ abstract class JavaPartialFunction[A, B] extends AbstractPartialFunction[A, B] {
|
||||||
*/
|
*/
|
||||||
sealed abstract class Option[A] extends java.lang.Iterable[A] {
|
sealed abstract class Option[A] extends java.lang.Iterable[A] {
|
||||||
def get: A
|
def get: A
|
||||||
|
/**
|
||||||
|
* Returns <code>a</code> if this is <code>some(a)</code> or <code>defaultValue</code> if
|
||||||
|
* this is <code>none</code>.
|
||||||
|
*/
|
||||||
|
def getOrElse[B >: A](defaultValue: B): B
|
||||||
def isEmpty: Boolean
|
def isEmpty: Boolean
|
||||||
def isDefined: Boolean = !isEmpty
|
def isDefined: Boolean = !isEmpty
|
||||||
def asScala: scala.Option[A]
|
def asScala: scala.Option[A]
|
||||||
|
|
@ -167,6 +172,7 @@ object Option {
|
||||||
*/
|
*/
|
||||||
final case class Some[A](v: A) extends Option[A] {
|
final case class Some[A](v: A) extends Option[A] {
|
||||||
def get: A = v
|
def get: A = v
|
||||||
|
def getOrElse[B >: A](defaultValue: B): B = v
|
||||||
def isEmpty: Boolean = false
|
def isEmpty: Boolean = false
|
||||||
def asScala: scala.Some[A] = scala.Some(v)
|
def asScala: scala.Some[A] = scala.Some(v)
|
||||||
}
|
}
|
||||||
|
|
@ -176,6 +182,7 @@ object Option {
|
||||||
*/
|
*/
|
||||||
private case object None extends Option[Nothing] {
|
private case object None extends Option[Nothing] {
|
||||||
def get: Nothing = throw new NoSuchElementException("None.get")
|
def get: Nothing = throw new NoSuchElementException("None.get")
|
||||||
|
def getOrElse[B](defaultValue: B): B = defaultValue
|
||||||
def isEmpty: Boolean = true
|
def isEmpty: Boolean = true
|
||||||
def asScala: scala.None.type = scala.None
|
def asScala: scala.None.type = scala.None
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue