Skip to content

Commit 02fd952

Browse files
committed
Used 'isInstance' to replace 'isAssignableFrom' and added a unit test
1 parent e0caeee commit 02fd952

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

rxjava-core/src/main/java/rx/Observable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4366,7 +4366,7 @@ public <R> Observable<R> cast(final Class<R> klass) {
43664366
public <R> Observable<R> ofType(final Class<R> klass) {
43674367
return filter(new Func1<T, Boolean>() {
43684368
public Boolean call(T t) {
4369-
return klass.isAssignableFrom(t.getClass());
4369+
return klass.isInstance(t);
43704370
}
43714371
}).cast(klass);
43724372
}

rxjava-core/src/test/java/rx/ObservableTests.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import static org.mockito.Mockito.*;
2121

2222
import java.util.ArrayList;
23+
import java.util.LinkedList;
24+
import java.util.List;
2325
import java.util.concurrent.CountDownLatch;
2426
import java.util.concurrent.TimeUnit;
2527
import java.util.concurrent.atomic.AtomicInteger;
@@ -718,4 +720,25 @@ public void testOfType() {
718720
verify(aObserver, times(1)).onCompleted();
719721
}
720722

723+
@Test
724+
public void testOfTypeWithPolymorphism() {
725+
ArrayList<Integer> l1 = new ArrayList<Integer>();
726+
l1.add(1);
727+
LinkedList<Integer> l2 = new LinkedList<Integer>();
728+
l2.add(2);
729+
730+
@SuppressWarnings("rawtypes")
731+
Observable<List> observable = Observable.<Object>from(l1, l2, "123").ofType(List.class);
732+
733+
@SuppressWarnings("unchecked")
734+
Observer<Object> aObserver = mock(Observer.class);
735+
observable.subscribe(aObserver);
736+
verify(aObserver, times(1)).onNext(l1);
737+
verify(aObserver, times(1)).onNext(l2);
738+
verify(aObserver, never()).onNext("123");
739+
verify(aObserver, never()).onError(
740+
org.mockito.Matchers.any(Throwable.class));
741+
verify(aObserver, times(1)).onCompleted();
742+
}
743+
721744
}

0 commit comments

Comments
 (0)