RxJava - PublishSubject

PublishSubject émet des éléments aux observateurs actuellement abonnés et des événements terminaux aux observateurs actuels ou en retard.

Déclaration de classe

Voici la déclaration pour io.reactivex.subjects.PublishSubject<T> classe -

public final class PublishSubject<T>
extends Subject<T>

Exemple de PublishSubject

Créez le programme Java suivant en utilisant n'importe quel éditeur de votre choix dans, par exemple, C: \> RxJava.

ObservableTester.java

import io.reactivex.subjects.PublishSubject;
public class ObservableTester  {
   public static void main(String[] args) {   
      final StringBuilder result1 = new StringBuilder();
      final StringBuilder result2 = new StringBuilder();         

      PublishSubject<String> subject = PublishSubject.create(); 
      subject.subscribe(value -> result1.append(value) ); 
      subject.onNext("a"); 
      subject.onNext("b"); 
      subject.onNext("c"); 
      subject.subscribe(value -> result2.append(value)); 
      subject.onNext("d"); 
      subject.onComplete();

      //Output will be abcd 
      System.out.println(result1);
      //Output will be d only
      //as subscribed after c item emitted.
      System.out.println(result2);
   }
}

Vérifiez le résultat

Compilez la classe en utilisant javac compilateur comme suit -

C:\RxJava>javac ObservableTester.java

Exécutez maintenant l'ObservableTester comme suit -

C:\RxJava>java ObservableTester

Il devrait produire la sortie suivante -

abcd
d