在我不期望的情况下,出现类型不匹配的错误。在Java中编写泛型类型
public interface I {}
public abstract class C {}
public class A extends C implements I {}
public class B extends C implements I {}
public class Foo {
public <T extends C & I> T getComposition(String selector) {
switch (selector) {
case "a": return new A(); // type-mismatch!
case "b": return new B(); // type-mismatch!
}
}
}
为什么A
,这既是C
和I
,不能返回的T
?
如果我把你的方法称为'foo。 getComposition()',这个方法应该返回一个'Hello'的实例,但它返回一个'A'的实例。 A扩展C&I.T也是。但这并不意味着T和A是同一班。 –
我错过了!谢谢@JBNizet。 –
@JBNizet这个解释是有道理的,但是你能指出一些关于泛型方面的更多的阅读吗?至少从我的角度来看,如果这将是一个答案,我会upvote,;-) – GhostCat