對不起,但我不確定我是否使用或正在使用正確的術語,但基本上我想創建一個名爲EntityList
的類,它擴展了ArrayList但我希望它使我創建的接口EntityInterface
基本上用於E的所有時刻EntityList
,所以我沒有手動聲明。Java:如何擴展一個使用泛型但限制類型的對象
代碼明智的我希望能夠把這個在
EntityList entityList = new EntityList();
,並獲得該
EntityList<EntityInterface> entityList = new EntityList<EntityInterface>();
我真的不知道該如何從這裏出發的等效的結果。這是我對這個問題的嘗試。
import java.util.ArrayList;
//right now just a class that extends ArrayList designed to hold Entities.
public class EntityList<EntityInterface> extends ArrayList<EntityInterface> {
EntityList(){
}
}
我可以顯示問題的最好辦法是顯示彷彿ArrayList的是瞬間變化。
import java.util.ArrayList;
//right now just a class that extends ArrayList designed to hold Entities.
public class EntityList<EntityInterface> {
ArrayList al = new ArrayList();
EntityList(){
}
}
但是這基本上是我想要的東西,又在變量的形式,而不是延伸形式。
import java.util.ArrayList;
//right now just a class that extends ArrayList designed to hold Entities.
public class EntityList<EntityInterface> {
ArrayList<EntityInterface> al = new ArrayList<EntityInterface>();
EntityList(){
}
}
我相信,如果我這樣做,
public class EntityList<? implements EntityInterface> extends ArrayList<?> {
它應該工作在此基礎上螺紋。與我的代碼此修改嘗試它日食後 Generic: ArrayList of ? Extends ISomeInterface in Java
但是:
public class EntityList<E implements EntityInterface> extends ArrayList<E> {
和 公共類EntityList擴展的ArrayList { 兩人都在日食引發錯誤。 我正在使用Java 6.我不確定我使用的是哪個子版本。我確實有Java 7,如果這將糾正錯誤,我會嘗試它。
不只是EntityInterface作爲名稱,如果泛型類型? 。 爲什麼這是如何不同於 。 「公共類EntityList擴展ArrayList {」 –
JayCD
「EntityList不再是一般類型的類,所以你會像使用它:'EntityList list = new EntityList();'。 –
這看起來不錯。記住當你從一個EntityList中獲得(x)時,你將得到一個EntityInterface,而不是實際放入的對象的類。 – CapnSmack