【发布时间】:2016-12-23 12:34:53
【问题描述】:
为什么返回类型不满足下面方法中的方法签名?
protected Observable<List<? extends Person>> getLoadPersonsObservable() {
return StudentsProvider.getStudentsProvider().getStudents().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
observeOn() 方法返回以下内容:
Observable<List<Student>>
这里是学生类:
public class Student extends Person {
public Student(String name, String id, boolean approved) {
super(name, id, approved);
}
}
目前,getStudents() 是一个存根方法,模拟网络调用:
@Override
public Observable<List<Student>> getStudents() {
final Observable<List<Student>> fetchStudents = Observable.create(new Observable.OnSubscribe<List<Student>>() {
@Override
public void call(Subscriber<? super List<Student>> subscriber) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
List <Student> stubList = new ArrayList<>();
stubList.add(new Student("Freddie Mercury", "1", true));
stubList.add(new Student("Jimmy Hendrix", "2", true));
subscriber.onNext(stubList);
subscriber.onCompleted();
}
});
return fetchStudents;
}
提前致谢! - 伴侣
【问题讨论】:
-
你能展示
StudentsProvider.getStudentsProvider().getStudents()的实现吗 -
以任何类型的
Observable<?>这样的 observable 形式返回。 -
尝试用
Observable<? extends List<? extends Person>>替换Observable<List<? extends Person>>
标签: java android wildcard rx-java rx-android