1
我有一個帶有業務對象(我們稱之爲SuperClass)的Android應用程序,它有幾個派生類(讓我們稱它們爲DerviedClassA,DerivedClassB等)。每個對象具有一個構造這需要具有多個行Cursor對象並分配基於當前行上相應的屬性在光標Android - 使用Java泛型返回派生類的ArrayList
public Class DerivedClassA
{
// properties
private int X;
// etc
public DerivedClassA(Cursor data)
{
X = data.getInt(data.getColumIndex(ColumnX));
// etc
}
}
我然後有BO方法,返回派生類的ArrayList,象下面:
public static ArrayList<DerivedClassA> getDerivedClassAList(Cursor data)
{
ArrayList<DerivedClassA> list = new ArrayList<DerivedClassA>();
for(int i=0;i<data.getCount();i++)
{
data.moveToPosition(i);
DerivedClassA wev = new DerivedClassA(data);
list.add(wev);
}
data.close();
return list;
}
等了DerivedClassB,DerivedClassC等。爲了避免這種重複,我希望能夠有一個單一的方法,這在某種程度上發生在派生類的類型,調用的派生適當的構造函數類,並返回適當派生的ArrayList類。例如:
public static ArrayList<T extends SuperClass> getDerivedClassList(Cursor data)
{
ArrayList<T> list = new ArrayList<T>();
for(int i=0;i<data.getCount();i++)
{
data.moveToPosition(i);
T wev = new T(data);
list.add(wev);
}
data.close();
return list;
}
但是,我不確定它是否真的有可能,或者如何去做。任何指針將不勝感激。
不太。上面應該是ArrayList。您不指定邊界兩次。 –
EJP
這幾乎工作... Eclipse給我一個關於T wev = new T(data)行的錯誤...'不能實例化類型T' – Michael
您必須首先在'SuperClass'上聲明構造函數。 –