inflearn logo
강의

講義

知識共有

Kevinの分かりやすいRxJava 1部

Single, Maybe, Completable

CompletableObserver 클래스의 람다식 표현관련

297

wer2wer

投稿した質問数 8

0

안녕하세요

람다식은 인터페이스안에 구현해야할 메소드가 하나만 있을때 사용 가능한것으로 알고있는데

completable.subscribeOn(Schedulers.computation())
        .subscribe(new CompletableObserver() {
    @Override
    public void onSubscribe(Disposable disposable) {
        // 아무것도 하지 않음
    }

    @Override
    public void onComplete() {
        Logger.log(LogType.ON_COMPLETE);
    }

    @Override
    public void onError(Throwable error) {
        Logger.log(LogType.ON_ERROR, error);
    }
});

여기서 CompletableObserver 는 오버라이드 해야할 메소드가 3개나 있는데 어떤 원리로

completable.subscribeOn(Schedulers.computation())
        .subscribe(
                () -> Logger.log(LogType.ON_COMPLETE),
                error -> Logger.log(LogType.ON_ERROR, error)
        );

이런식으로 람다표현이 가능한건가요?

함수형-프로그래밍 RxJava Reactive-Streams

回答 1

0

Kevin

안녕하세요?

 

아래 캡쳐 이미지에 있는 코드는 Completable 추상 클래스의 내부 코드 중 일부인데요.

파라미터로 CompletableObserver를 전달 받습니다.

image

아래 캡쳐 이미지 역시 Completable 추상 클래스의 내부 코드 중 일부이고,

파라미터로 두 개의 람다 표현식을 전달 받습니다.

image

즉, 파라미터가 다른 subscribe() 메서드가 Complatable 클래스 내부에 구현되어 있습니다.

첫번째 캡처 이미지에서는 파라미터로 전달 받은 CompletableObserver를 subscribeActual(observer)을 호출할 때 전달합니다. 두번째 캡쳐 이미지에서는 CallbackCompletableObserver의 생성자 파라미터로 람다를 전달한 후에 subscribe(observer)로 호출하는데 이렇게 호출하면 결국 내부에서 subscribeActual(observer)을 다시 호출합니다.

즉, CompletableObserver 인터페이스를 구현하는 클래스 내부에서 람다 표현식을 전달 받아서 사용할 수도 있고, 그렇지 않을 수도 있다라고 생각해 주시면 될 것 같습니다.

Single과 관련해 여쭤보고 싶은 부분이 있습니다!

0

264

2

cold/hot publisher 예제 코드와 관련해 질문 드립니다.

0

363

1

1강에 예시로 보여주신 ToDoSample 코드에 관해 질문 드립니다!

0

356

1

데이터 결합 연산자 / merge 관련 질문

0

445

1

DROP 배압 전략에 관한 궁금증

0

300

2

map에서의 TimeUtil.sleep에 관한 궁금점

0

216

1

강의 내용을 정리해서 개인 블로그에 올려도 될까요?

0

562

2

TimeUtil.sleep 관련 질문

0

286

1

배압 전략 중에서 DROP 전략과 관련해서 질문 있습니다.

0

335

1

Error 발생 시에도 계속 처리 방법

0

689

2

선언형 프로그래밍과 명령형 프로그래밍

1

784

2

첫번째 강의 부터 이번강의까지 수강하면서 궁금한점 질문드립니다.

0

325

1

안녕하세요. 질문이 있습니다.

1

354

1

logger 가 없는데 util 폴더도 같이 갖다놔야 하나요?

0

327

1

amb 연산자

0

233

1

질문 드립니다.

0

219

1

concatEager( ) 연산자에 관하여

0

318

1

Reactive Streams의 구성요소들과 RxJava의 구성요소들의 관계?

1

397

2

ObservableSequenceEqualExample.java 예제의 delay( ) 연산자 질문있습니다

0

309

3

defer( ), fromFuture( )도 just( )처럼 여러 인자 값을 받을 수 있는지 궁금합니다.

0

264

3

flatMapSingle() 메소드에 대하여

0

620

6

fromFuture() vs fromCallable() 생성 연산자에 대해

0

573

2

함수형 인터페이스 Comparator에 대해

0

397

2

Publisher와 Subscriber 간의 프로세스 흐름에 대한 질문

1

340

3