-1

我需要在 List<> 的任何实现上添加以下功能: - 结果对象永远不应显示正索引的 OutOfBounds 异常 - 当您使用 x=size 调用 get(x) 时,它将自动增加列表直到大小 x+1,并将用程序员希望的任何内容(NULL 除外)填充新创建的空间 - 请记住,List 应该是通用类型 - 否则,它应该像普通 List 一样工作

我知道我至少需要使用装饰器模式来添加功能,但是,我觉得还应该使用其他一些设计模式——也许是工厂或模板,但我不确定如何使用。

任何人都可以请至少提供一些关于我如何解决上述任务的提示吗?

4

1 回答 1

1
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);
    }
}
于 2015-07-09T12:12:24.993 回答