我的代码如下所示:为什么Java模板约束将约束类型限制为返回语句中的扩展类型?
public class Something<T extends Thing> {
private T theThing;
public Something(T aThing) {
theThing = aThing;
}
public T getTheThing() {
return theThing;
}
}
然后,冥冥中,我写这篇文章:
Something something = new Something<SpecialThing>(new SpecialThing()); // SpecialThing extends Thing
SpecialThing specialThing = something.getTheThing(); // Error: getTheThing() returns object of type Thing instead of SpecialThing!
为什么我没有得到theThing
为SpecialThing
,但作为一个Thing
呢?
事情类:
public abstract class Thing {
}
SpecialThing类:
public class SpecialThing extends Thing {
}
提供Thing和SpecialThing类代码。 – SMA 2014-10-19 13:51:29