Skip to content

Commit c9558b4

Browse files
Merge pull request #1778 from zsxwing/compose
Change Transformer to Func1<Observable<T>, Observable<R>>
2 parents a1aca70 + 5bba1c9 commit c9558b4

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

src/main/java/rx/Observable.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,17 +174,15 @@ public void call(Subscriber<? super R> o) {
174174
* @return the source Observable, transformed by the transformer function
175175
* @see <a href="https://github.com/ReactiveX/RxJava/wiki/Implementing-Your-Own-Operators">RxJava wiki: Implementing Your Own Operators</a>
176176
*/
177-
@SuppressWarnings("unchecked")
178177
public <R> Observable<R> compose(Transformer<? super T, ? extends R> transformer) {
179-
// Casting to Observable<R> is type-safe because we know Observable is covariant.
180-
return (Observable<R>) ((Transformer<T, ? extends R>) transformer).call(this);
178+
return ((Transformer<T, R>) transformer).call(this);
181179
}
182180

183181
/**
184182
* Transformer function used by {@link #compose}.
185183
* @warn more complete description needed
186184
*/
187-
public static interface Transformer<T, R> extends Func1<Observable<T>, Observable<? extends R>> {
185+
public static interface Transformer<T, R> extends Func1<Observable<T>, Observable<R>> {
188186
// cover for generics insanity
189187
}
190188

src/test/java/rx/CovarianceTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public Observable<String> call(GroupedObservable<Class<? extends Movie>, Movie>
8585
return g.compose(new Transformer<Movie, Movie>() {
8686

8787
@Override
88-
public Observable<? extends Movie> call(Observable<Movie> m) {
88+
public Observable<Movie> call(Observable<Movie> m) {
8989
return m.concatWith(Observable.just(new ActionMovie()));
9090
}
9191

@@ -112,7 +112,7 @@ public void testCovarianceOfCompose() {
112112
Observable<Movie> movie2 = movie.compose(new Transformer<Movie, Movie>() {
113113

114114
@Override
115-
public Observable<? extends Movie> call(Observable<Movie> t1) {
115+
public Observable<Movie> call(Observable<Movie> t1) {
116116
return Observable.just(new Movie());
117117
}
118118

@@ -124,7 +124,7 @@ public void testCovarianceOfCompose2() {
124124
Observable<Movie> movie = Observable.<Movie> just(new HorrorMovie());
125125
Observable<HorrorMovie> movie2 = movie.compose(new Transformer<Movie, HorrorMovie>() {
126126
@Override
127-
public Observable<? extends HorrorMovie> call(Observable<Movie> t1) {
127+
public Observable<HorrorMovie> call(Observable<Movie> t1) {
128128
return Observable.just(new HorrorMovie());
129129
}
130130
});
@@ -135,7 +135,7 @@ public void testCovarianceOfCompose3() {
135135
Observable<Movie> movie = Observable.<Movie>just(new HorrorMovie());
136136
Observable<HorrorMovie> movie2 = movie.compose(new Transformer<Movie, HorrorMovie>() {
137137
@Override
138-
public Observable<? extends HorrorMovie> call(Observable<Movie> t1) {
138+
public Observable<HorrorMovie> call(Observable<Movie> t1) {
139139
return Observable.just(new HorrorMovie()).map(new Func1<HorrorMovie, HorrorMovie>() {
140140

141141
@Override
@@ -152,7 +152,7 @@ public void testCovarianceOfCompose4() {
152152
Observable<HorrorMovie> movie = Observable.just(new HorrorMovie());
153153
Observable<HorrorMovie> movie2 = movie.compose(new Transformer<HorrorMovie, HorrorMovie>() {
154154
@Override
155-
public Observable<? extends HorrorMovie> call(Observable<HorrorMovie> t1) {
155+
public Observable<HorrorMovie> call(Observable<HorrorMovie> t1) {
156156
return t1.map(new Func1<HorrorMovie, HorrorMovie>() {
157157

158158
@Override

0 commit comments

Comments
 (0)