我有一个通用的使用有限制类型参数来限制这种类型的抽象类:继承的限制类型参数,以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