已经说过,你不能用new创建一个T的实例,所以
我会使用工厂模式或原型模式
所以你的构造函数看起来像
public BaseTable(int rows,int cols,LineFactory factory),带有适当的工厂实例.
在你的情况下,我更喜欢原型模式,因为你的TableEntry对象可能非常轻量级.您的代码如下所示:
public BaseTable(int rows, int cols, T prototype)
{
mRows = rows;
mCols = cols;
prototype.setColumns(cols);
mEntries = new ArrayList();
for (int i = 0; i < rows; i++)
{
@SuppressWarnings("unchecked")
T newClone = (T)prototype.clone();
mEntries.add(newClone); //this obv. does work :)
}
}
public static void main(String[] args)
{
new BaseTable(10, 2, new SimpleTableEntry());
}