动态设置图形类型java
我有一个为JavaRX创建简单观察者的方法动态设置图形类型java,java,generics,rx-java,Java,Generics,Rx Java,我有一个为JavaRX创建简单观察者的方法 protected Observer observer; protected <T> void createObserver(Class<T> type) { observer = new Observer() { @Override public void onSubscribe(Disposable d) { } @Override
protected Observer observer;
protected <T> void createObserver(Class<T> type) {
observer = new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object value) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
}
但是这不起作用。以下代码应该可以工作:
protected <T> void createObserver(Class<T> type) {
observer = new Observer<T>() { // <-- It's possible to assign types with arbitrary type arguments to a raw type.
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(T value) { // <-- Now it's legal
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
}
但是,不会有太大区别,因为您完全不知道t可能是什么,实际上它只是java.lang.Object,除非您知道可能会收到什么值。您的意思是您知道可能的值类型并希望执行某些特定于类型的操作,还是只希望它是由类型变量T表示的类型。@glee8e,我在createObserver方法中将值的类型设为参数。所以我想让类I的对象设置为答案,但我知道我不能做我想做的事情,因为java不允许。无论如何,谢谢。观察者字段必须是类型为“观察者”的字段,这使得它毫无用处。
protected <T> void createObserver(Class<T> type) {
observer = new Observer<T>() { // <-- It's possible to assign types with arbitrary type arguments to a raw type.
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(T value) { // <-- Now it's legal
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
}