在 Java 中向列表添加功能
Add functionalities to List in Java
我需要在 List<> 的任何实现上添加以下功能:
- 结果对象不应该显示正索引的 OutOfBounds 异常
- 当你调用 get(x) 时,x=size,它会自动增加列表直到大小 x+1,并且会用程序员希望的任何东西填充新创建的空间(NULL 除外) - 请记住,列表应该是通用类型
- 否则,它应该像一个普通的 List
我知道我至少需要使用装饰器模式来添加功能,但是,我觉得还应该使用其他一些设计模式——也许是工厂模式或模板,但我不确定如何使用.
任何人都可以至少给我一些关于如何解决上述任务的提示吗?
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);
}
}
我需要在 List<> 的任何实现上添加以下功能: - 结果对象不应该显示正索引的 OutOfBounds 异常 - 当你调用 get(x) 时,x=size,它会自动增加列表直到大小 x+1,并且会用程序员希望的任何东西填充新创建的空间(NULL 除外) - 请记住,列表应该是通用类型 - 否则,它应该像一个普通的 List
我知道我至少需要使用装饰器模式来添加功能,但是,我觉得还应该使用其他一些设计模式——也许是工厂模式或模板,但我不确定如何使用.
任何人都可以至少给我一些关于如何解决上述任务的提示吗?
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);
}
}