JavaScript is disabled on your browser.
Skip navigation links
  • Summary:
  • Nested |
  • Field |
  • Constr |
  • Method
  • Detail:
  • Field |
  • Constr |
  • Method
io.reactivex.rxjava3.subjects

Class MaybeSubject<T>

  • Type Parameters:
    T - the value type received and emitted
    All Implemented Interfaces:
    MaybeObserver<T>, MaybeSource<T>


    public final class MaybeSubject<T>
    extends Maybe<T>
    implements MaybeObserver<T>
    Represents a hot Maybe-like source and consumer of events similar to Subjects.

    This subject does not have a public constructor by design; a new non-terminated instance of this MaybeSubject can be created via the create() method.

    Since the MaybeSubject is conceptionally derived from the Processor type in the Reactive Streams specification, nulls are not allowed (Rule 2.13) as parameters to onSuccess(Object) and onError(Throwable). Such calls will result in a NullPointerException being thrown and the subject's state is not changed.

    Since a MaybeSubject is a Maybe, calling onSuccess, onError or onComplete will move this MaybeSubject into its terminal state atomically.

    All methods are thread safe. Calling onSuccess(Object) or onComplete() multiple times has no effect. Calling onError(Throwable) multiple times relays the Throwable to the RxJavaPlugins.onError(Throwable) global error handler.

    Even though MaybeSubject implements the MaybeObserver interface, calling onSubscribe is not required (Rule 2.12) if the subject is used as a standalone source. However, calling onSubscribe after the MaybeSubject reached its terminal state will result in the given Disposable being disposed immediately.

    This MaybeSubject supports the standard state-peeking methods hasComplete(), hasThrowable(), getThrowable() and hasObservers() as well as means to read any success item in a non-blocking and thread-safe manner via hasValue() and getValue().

    The MaybeSubject does not support clearing its cached onSuccess value.

    Scheduler:
    MaybeSubject does not operate by default on a particular Scheduler and the MaybeObservers get notified on the thread where the terminating onSuccess, onError or onComplete methods were invoked.
    Error handling:
    When the onError(Throwable) is called, the MaybeSubject enters into a terminal state and emits the same Throwable instance to the last set of MaybeObservers. During this emission, if one or more MaybeObservers dispose their respective Disposables, the Throwable is delivered to the global error handler via RxJavaPlugins.onError(Throwable) (multiple times if multiple MaybeObservers cancel at once). If there were no MaybeObservers subscribed to this MaybeSubject when the onError() was called, the global error handler is not invoked.

    Example usage:

    
     MaybeSubject<Integer> subject1 = MaybeSubject.create();
     TestObserver<Integer> to1 = subject1.test();
     // MaybeSubjects are empty by default
     to1.assertEmpty();
     subject1.onSuccess(1);
     // onSuccess is a terminal event with MaybeSubjects
     // TestObserver converts onSuccess into onNext + onComplete
     to1.assertResult(1);
     TestObserver<Integer> to2 = subject1.test();
     // late Observers receive the terminal signal (onSuccess) too
     to2.assertResult(1);
     // -----------------------------------------------------
     MaybeSubject<Integer> subject2 = MaybeSubject.create();
     TestObserver<Integer> to3 = subject2.test();
     subject2.onComplete();
     // a completed MaybeSubject completes its MaybeObservers
     to3.assertResult();
     TestObserver<Integer> to4 = subject1.test();
     // late Observers receive the terminal signal (onComplete) too
     to4.assertResult();
     

    History: 2.0.5 - experimental

    Since:
    2.1
    • Method Detail

      • onComplete

        public void onComplete()
        Description copied from interface: MaybeObserver
        Called once the deferred computation completes normally.
        Specified by:
        onComplete in interface MaybeObserver<T>
      • subscribeActual

        protected void subscribeActual(MaybeObserver<? super T> observer)
        Description copied from class: Maybe
        Implement this method in subclasses to handle the incoming MaybeObservers.

        There is no need to call any of the plugin hooks on the current Maybe instance or the MaybeObserver; all hooks and basic safeguards have been applied by Maybe.subscribe(MaybeObserver) before this method gets called.

        Specified by:
        subscribeActual in class Maybe<T>
        Parameters:
        observer - the MaybeObserver to handle, not null
      • getValue

        @Nullable
        public T getValue()
        Returns the success value if this MaybeSubject was terminated with a success value.
        Returns:
        the success value or null
      • hasValue

        public boolean hasValue()
        Returns true if this MaybeSubject was terminated with a success value.
        Returns:
        true if this MaybeSubject was terminated with a success value
      • getThrowable

        @Nullable
        public @Nullable Throwable getThrowable()
        Returns the terminal error if this MaybeSubject has been terminated with an error, null otherwise.
        Returns:
        the terminal error or null if not terminated or not with an error
      • hasThrowable

        public boolean hasThrowable()
        Returns true if this MaybeSubject has been terminated with an error.
        Returns:
        true if this MaybeSubject has been terminated with an error
      • hasComplete

        public boolean hasComplete()
        Returns true if this MaybeSubject has been completed.
        Returns:
        true if this MaybeSubject has been completed
      • hasObservers

        public boolean hasObservers()
        Returns true if this MaybeSubject has observers.
        Returns:
        true if this MaybeSubject has observers
Skip navigation links
  • Summary:
  • Nested |
  • Field |
  • Constr |
  • Method
  • Detail:
  • Field |
  • Constr |
  • Method

AltStyle によって変換されたページ (->オリジナル) /