При использовании dematerialize объект Observable, возвращаемый функцией .dematerialize (), всегда имеет тип Object, а не мой исходный тип.
Пример здесь (использование IntelliJ в проекте Android)
import org.junit.Test;
import io.reactivex.Observable;
import io.reactivex.observers.TestObserver;
public class RxTest {
@Test
public void test() {
Observable<String> wrongObservable = ((Observable<String>) Observable.just("Test").materialize().dematerialize());
Observable<String> castedObservable = Observable.just("Test").materialize().dematerialize().map(i -> (String)i);
TestObserver<String> testObserver = new TestObserver<>();
castedObservable.subscribe(testObserver);
testObserver.assertValueCount(1);
testObserver.assertValue("Test");
}
}
Этот код покажет ошибку в первой строке тестовой функции
error: incompatible types: Observable<Object> cannot be converted to Observable<String>
Если после этого я выполняю приведение к карте-вызову (как показано на следующей строке), все, похоже, работает нормально. Что я тут не так делаю?