假設我有以下接口:問題:類型不匹配錯誤
public interface Interface<T extends Number>{
public Vector<Interface<T>> getVector();
}
和下面的類實現該接口:
public abstract class C<T extends Number> implements Interface<T>{
private Vector<C<T>> vector;
public Vector<Interface<T>> getVector(){ //errror
return this.vector;
}
}
爲什麼不合法返回Vector<C<T>>
同時合法(顯然)返回。 C
實際上是實施Interface
,所以應該可以吧?我錯過了什麼?
編輯:
爲什麼這項工作非泛型接口?這實際上是一個通用的相關問題嗎?
public interface Interface{
public Interface getVector();
}
public abstract class C implements Interface {
private C;
public Interface getVector(){ //errror
return this.c;
}
}
你所描述的技術術語是**協變**。搜索一下,你會發現很多重複的東西,包括這一個:[任何簡單的方法來解釋爲什麼我不能做'List animals = new ArrayList ()'?](http:// stackoverflow。問題/ 2346763/any-simple-way-to-explain-why-i-can-do-list-animal-animals-new-arraylistdo) –
@Daniel Pryden:謝謝你的技術術語。 – Heisenbug