我想要一個實現接口的類,它將特定的子類指定爲參數。通用類型參數指定擴展類嗎?
public abstract Task implements TaskStatus<Task> {
TaskStatus<T> listener;
protected complete() {
// ugly, unsafe cast
callback.complete((T) this);
}
}
public interface TaskStatus<T> {
public void complete(T task);
}
但不是隻是任務,或者,我想保證所使用的type-arg是擴展這個類的特定類。
所以我想出最好的是:
public abstract Task<T extends Task> implements TaskStatus<T> {
}
你會延長,通過寫:
public class MyTask extends Task<MyTask> {
}
但是,這也將是有效的:
public class MyTask extends Task<SomeOtherTask> {
}
而回調的調用將爆炸與ClassCastException。那麼,這種做法是錯誤的嗎?或者有沒有正確的方法可以做到這一點,我不知何故錯過了?
的'擴展任務'是沒有意義的,應該在這裏移除 –
newacct
2013-07-28 10:24:52