RxJava Tutorial on RxJava MayBe Observable

the maybe class represents deferred response. maybe observable can emit either a single successful value or no value.

class declaration

following is the declaration for io.reactivex.single<t> class −

public abstract class maybe<t>
   extends object
      implements maybesource<t>

protocol

following is the sequential protocol that maybe observable operates −

onsubscribe (onsuccess | onerror | oncomplete)?

maybe example

create the following java program using any editor of your choice in, say, c:\> rxjava.

observabletester.java

import java.util.concurrent.timeunit;

import io.reactivex.maybe;
import io.reactivex.disposables.disposable;
import io.reactivex.observers.disposablemaybeobserver;
import io.reactivex.schedulers.schedulers;

public class observabletester {
   public static void main(string[] args) throws interruptedexception {
      //create an observer
      disposable disposable = maybe.just("hello world")
         .delay(2, timeunit.seconds, schedulers.io())
         .subscribewith(new disposablemaybeobserver<string>() {
         @override
         public void onerror(throwable e) { 
            e.printstacktrace();
         }

         @override
         public void onsuccess(string value) {
            system.out.println(value);
         }

         @override
         public void oncomplete() {
            system.out.println("done!");
         }
      }); 
      thread.sleep(3000);
      //start observing
      disposable.dispose();
   }
}

verify the result

compile the class using javac compiler as follows −

c:\rxjava>javac observabletester.java

now run the observabletester as follows −

c:\rxjava>java observabletester

it should produce the following output −

hello world