我已经定义了以下类:
现在我想要一个这样的类:
但这样是无法编译通过的:
但这迫使我写出以下内容:
class Operation<S>
class GetReservationOperation extends Operation<Reservation>
现在我想要一个这样的类:
OperationExecutor<T extends Operation<S>> extends AsyncTask<T,Void,S>{
@Override
protected S doInBackground(T... params) {
return null;
}
}
但这样是无法编译通过的:
OperationExecutor<GetReservationOperation> executor = new ....
为什么Java不允许这样做?
经过一段时间的思考,我提出了以下解决方案:
OperationExecutor<T extends Operation<S>,S> extends AsyncTask<T,Void,S>{
@Override
protected S doInBackground(T... params) {
return null;
}
}
但这迫使我写出以下内容:
OperationExecutor<GetReservationOperation,Reservation> executor = new ....
这看起来很奇怪。有没有办法让它看起来更好看一些?
编辑 这个方法行得通。
OperationExecutor<S> extends AsyncTask<Operation<S>,Void,S>{
@Override
protected S doInBackground(Operation<S>... params) {
return null;
}
}
OperationExecutor<Reservation> executor = new ....
executor.execute(getReservationOperation);
...
藏着什么?跟你的声明一样吗? - Jacob Raihle