diff --git a/src/main/java/rx/Observable.java b/src/main/java/rx/Observable.java
index 255d1af38d..53492f73fb 100644
--- a/src/main/java/rx/Observable.java
+++ b/src/main/java/rx/Observable.java
@@ -174,17 +174,15 @@ public void call(Subscriber super R> o) {
* @return the source Observable, transformed by the transformer function
* @see RxJava wiki: Implementing Your Own Operators
*/
- @SuppressWarnings("unchecked")
public Observable compose(Transformer super T, ? extends R> transformer) {
- // Casting to Observable is type-safe because we know Observable is covariant.
- return (Observable) ((Transformer) transformer).call(this);
+ return ((Transformer) transformer).call(this);
}
/**
* Transformer function used by {@link #compose}.
* @warn more complete description needed
*/
- public static interface Transformer extends Func1, Observable extends R>> {
+ public static interface Transformer extends Func1, Observable> {
// cover for generics insanity
}
diff --git a/src/test/java/rx/CovarianceTest.java b/src/test/java/rx/CovarianceTest.java
index b269751bec..8b56fa0c49 100644
--- a/src/test/java/rx/CovarianceTest.java
+++ b/src/test/java/rx/CovarianceTest.java
@@ -85,7 +85,7 @@ public Observable call(GroupedObservable, Movie>
return g.compose(new Transformer() {
@Override
- public Observable extends Movie> call(Observable m) {
+ public Observable call(Observable m) {
return m.concatWith(Observable.just(new ActionMovie()));
}
@@ -112,7 +112,7 @@ public void testCovarianceOfCompose() {
Observable movie2 = movie.compose(new Transformer() {
@Override
- public Observable extends Movie> call(Observable t1) {
+ public Observable call(Observable t1) {
return Observable.just(new Movie());
}
@@ -124,7 +124,7 @@ public void testCovarianceOfCompose2() {
Observable movie = Observable. just(new HorrorMovie());
Observable movie2 = movie.compose(new Transformer() {
@Override
- public Observable extends HorrorMovie> call(Observable t1) {
+ public Observable call(Observable t1) {
return Observable.just(new HorrorMovie());
}
});
@@ -135,7 +135,7 @@ public void testCovarianceOfCompose3() {
Observable movie = Observable.just(new HorrorMovie());
Observable movie2 = movie.compose(new Transformer() {
@Override
- public Observable extends HorrorMovie> call(Observable t1) {
+ public Observable call(Observable t1) {
return Observable.just(new HorrorMovie()).map(new Func1() {
@Override
@@ -152,7 +152,7 @@ public void testCovarianceOfCompose4() {
Observable movie = Observable.just(new HorrorMovie());
Observable movie2 = movie.compose(new Transformer() {
@Override
- public Observable extends HorrorMovie> call(Observable t1) {
+ public Observable call(Observable t1) {
return t1.map(new Func1() {
@Override