我需要在List<>的任何实现中添加以下功能: - 结果对象永远不应显示正索引的OutOfBounds异常 - 当你调用get(x)时,x = size,它将自动增加列表直到x + 1大小,并将用程序员希望的任何东西填充新创建的空格(除了NULL) - 记住,List应该是通用类型 - 否则,它应该像普通的列表
我知道我需要使用装饰器模式,至少要添加功能,但是,我觉得还应该使用其他一些设计模式 - 可能是工厂或模板,但我不确定如何。< / p>
任何人都可以至少提供一些关于如何解决上述任务的提示吗?
答案 0 :(得分:0)
class ListImpl<T> extends ArrayList {
private Class<T> tType;
public ListImpl(Class<T> tType) {
this.tType = tType;
}
@Override
public T get(int i) {
if (i < this.size()) {
T result = (T) super.get(i);
} else {
int resize = 1 + i - this.size();
// T[] array = (T[]) new Object[resize];
T[] array
= (T[]) java.lang.reflect.Array.newInstance(tType, resize);
this.addAll(Arrays.asList(array));
}
return (T) super.get(i);
}
}