Class JavaPartialFunction<A,B>

java.lang.Object
scala.runtime.AbstractPartialFunction<A,B>
org.apache.pekko.japi.JavaPartialFunction<A,B>
All Implemented Interfaces:
scala.Function1<A,B>, scala.PartialFunction<A,B>

public abstract class JavaPartialFunction<A,B> extends scala.runtime.AbstractPartialFunction<A,B>
Helper for implementing a *pure* partial function: it will possibly be invoked multiple times for a single &ldquo;application&rdquo;, because its only abstract method is used for both isDefinedAt() and apply(); the former is mapped to isCheck == true and the latter to isCheck == false for those cases where this is important to know.

Failure to match is signaled by throwing noMatch(), i.e. not returning normally (the exception used in this case is pre-allocated, hence not that expensive).


 new JavaPartialFunction<Object, String>() {
   public String apply(Object in, boolean isCheck) {
     if (in instanceof TheThing) {
       if (isCheck) return null; // to spare the expensive or side-effecting code
       return doSomethingWithTheThing((TheThing) in);
     } else {
       throw noMatch();
     }
   }
 }
 

The typical use of partial functions from Apache Pekko looks like the following:


 if (pf.isDefinedAt(x)) {
   pf.apply(x);
 }
 

i.e. it will first call JavaPartialFunction.apply(x, true) and if that does not throw noMatch() it will continue with calling JavaPartialFunction.apply(x, false).

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
     
    static class 
     

    Nested classes/interfaces inherited from interface scala.Function1

    scala.Function1.UnliftOps<A extends Object,B extends Object>, scala.Function1.UnliftOps$

    Nested classes/interfaces inherited from interface scala.PartialFunction

    scala.PartialFunction.ElementWiseExtractor<A extends Object,B extends Object>, scala.PartialFunction.ElementWiseExtractor$
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    final B
    apply(A x)
     
    abstract B
    apply(A x, boolean isCheck)
     
    final <A1 extends A, B1>
    B1
    applyOrElse(A1 x, scala.Function1<A1,B1> default_)
     
    final boolean
     
    static final RuntimeException
     

    Methods inherited from class scala.runtime.AbstractPartialFunction

    andThen, andThen, apply$mcDD$sp, apply$mcDF$sp, apply$mcDI$sp, apply$mcDJ$sp, apply$mcFD$sp, apply$mcFF$sp, apply$mcFI$sp, apply$mcFJ$sp, apply$mcID$sp, apply$mcIF$sp, apply$mcII$sp, apply$mcIJ$sp, apply$mcJD$sp, apply$mcJF$sp, apply$mcJI$sp, apply$mcJJ$sp, apply$mcVD$sp, apply$mcVF$sp, apply$mcVI$sp, apply$mcVJ$sp, apply$mcZD$sp, apply$mcZF$sp, apply$mcZI$sp, apply$mcZJ$sp, compose, compose, elementWise, lift, orElse, runWith, toString, unapply

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • JavaPartialFunction

      public JavaPartialFunction()
  • Method Details

    • noMatch

      public static final RuntimeException noMatch()
    • apply

      public abstract B apply(A x, boolean isCheck) throws Exception
      Throws:
      Exception
    • isDefinedAt

      public final boolean isDefinedAt(A x)
    • apply

      public final B apply(A x)
      Specified by:
      apply in interface scala.Function1<A,B>
      Overrides:
      apply in class scala.runtime.AbstractPartialFunction<A,B>
    • applyOrElse

      public final <A1 extends A, B1> B1 applyOrElse(A1 x, scala.Function1<A1,B1> default_)
      Specified by:
      applyOrElse in interface scala.PartialFunction<A,B>
      Overrides:
      applyOrElse in class scala.runtime.AbstractPartialFunction<A,B>