src/main/java/io/reactivex/Observable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError,
            Action onComplete, Consumer<? super Disposable> onSubscribe) {
        ObjectHelper.requireNonNull(onNext, "onNext is null");
        ObjectHelper.requireNonNull(onError, "onError is null");
        ObjectHelper.requireNonNull(onComplete, "onComplete is null");
        ObjectHelper.requireNonNull(onSubscribe, "onSubscribe is null");

        LambdaObserver<T> ls = new LambdaObserver<T>(onNext, onError, onComplete, onSubscribe);

        subscribe(ls);

        return ls;
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError,
            Action onComplete, Consumer<? super Disposable> onSubscribe) {
        ObjectHelper.requireNonNull(onNext, "onNext is null");
        ObjectHelper.requireNonNull(onError, "onError is null");
        ObjectHelper.requireNonNull(onComplete, "onComplete is null");
        ObjectHelper.requireNonNull(onSubscribe, "onSubscribe is null");

        LambdaObserver<T> ls = new LambdaObserver<T>(onNext, onError, onComplete, onSubscribe);

        subscribe(ls);

        return ls;
    }
@ CheckReturnValue @ SchedulerSupport ( SchedulerSupport . NONE ) public final Disposable subscribe ( Consumer < ? super T > onNext , Consumer < ? super Throwable > onError , Action onComplete , Consumer < ? super Disposable > onSubscribe ) { ObjectHelper . requireNonNull ( onNext , "onNext is null" ) ; ObjectHelper . requireNonNull ( onError , "onError is null" ) ; ObjectHelper . requireNonNull ( onComplete , "onComplete is null" ) ; ObjectHelper . requireNonNull ( onSubscribe , "onSubscribe is null" ) ; LambdaObserver < T > ls = new LambdaObserver < T > ( onNext , onError , onComplete , onSubscribe ) ; subscribe ( ls ) ; return ls ; }
Subscribes to an ObservableSource and provides callbacks to handle the items it emits and any error or
completion notification it issues.
<dl>
<dt><b>Scheduler:</b></dt>
<dd>{@code subscribe} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>

@param onNext
the {@code Consumer<T>} you have designed to accept emissions from the ObservableSource
@param onError
the {@code Consumer<Throwable>} you have designed to accept any error notification from the
ObservableSource
@param onComplete
the {@code Action} you have designed to accept a completion notification from the
ObservableSource
@param onSubscribe
the {@code Consumer} that receives the upstream's Disposable
@return a {@link Disposable} reference with which the caller can stop receiving items before
the ObservableSource has finished sending them
@throws NullPointerException
if {@code onNext} is null, or
if {@code onError} is null, or
if {@code onComplete} is null, or
if {@code onSubscribe} is null
@see <a href="http://reactivex.io/documentation/operators/subscribe.html">ReactiveX operators documentation: Subscribe</a>
Subscribes to an ObservableSource and provides callbacks to handle the items it emits and any error or completion notification it issues . <dl > <dt > <b > Scheduler : < / b > < / dt > <dd > { @code subscribe } does not operate by default on a particular { @link Scheduler } . < / dd > < / dl >