在Java中添加功能到List

时间:2015-07-09 11:26:41

标签: java list decorator factory template-method-pattern

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

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

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

1 个答案:

答案 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);
    }
}