在我不期望的情況下,出現類型不匹配的錯誤。在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