我有一個通用的使用有限制類型參數來限制這種類型的抽象類:繼承的限制類型參數,以LIMITE類型
public abstract class AbstractCreator<T extends Request> {
....
}
然後我從AbstractCreator和一個多子女使用另一個界類型參數像未來:
public abstract class AbstractBigCreator<U extends BigRequest> extends AbstractCreator<U> {
U request;
...
}
的接口界類型都像下一個:
public interface Request<T extends Some> {
T getRequest();
}
public interface BigRequest<T extends SomeOther> extends Request<T> {
}
我的問題是這個孩子與另一個有界的類型參數限制在它自己的父類有界的類型參數,而不是這個類型參數。所以如果我打電話getRequest()
從U request
我得到它是<T extends Some>
而不是<T extends SomeOther>
。
我想到:
U request;
request.getRequest(); //Class <T extends SomeOther>
而是我得到:
U request;
request.getRequest(); //Class <T extends Some>
任何人都知道發生了什麼事?
爲什麼'AbstractBigCreator'中不能有2個(有界)的類型參數? – syntagma
我試圖重現你的問題,但我不能;對於我來說,U的推斷類型按預期擴展了'BigRequest'。你在哪裏看到編譯器認爲它擴展了'Request'的事實?是當你調用一個方法或什麼的? –
已更新的問題。現在更具體。 – Pau