我真的希望你能帮助我。 对于我的Java课程,我需要设计一个通用的数组构建器。 这不会是一个问题,但是由于一些愚蠢的原因,我不允许知道我的List应该包含什么类型的对象,直到它被初始化之后。
我知道我可以将它作为对象列表,但内容应该保持其属性。
下面的代码大致显示了每种方法应该做的事情。
public class ArrayListBuilder<T> implements IBuilder<T> {
private ArrayList<T> content;
public ArrayListBuilder<T>(){
content = new ArrayList<T>();
}
public static ArrayListBuilder make() {
return new ArrayListBuilder();
}
@Override
public void add(T t) {
content.add(t);
}
@Override
public Collection<T> result() {
return content;
}
可能主要用于Zip类,它会从两个旧类创建一个新列表。
提前致谢,
Traz
编辑:我的问题如下:我的T是完全随机的,新列表必须知道它包含T对象,用于定位所述对象的方法。但我无法告诉ArrayList它在创建时会包含什么。
有没有办法用类型T初始化它,然后完全改变它并且让类知道,那个收集的Ts现在它应该返回一些其他类型的集合?
ArrayList<Pair<Integer,String>> zipResult1 =
zip(ArrayListBuilder.make(), Arrays.asList(1,2,3), Arrays.asList(”4”,”5”,”6”));
给定的代码显示了一些要求,如您所见,make()方法不能包含类型声明,并且仍然提供整数和字符串的副本。
答案 0 :(得分:0)
那么,你究竟遇到了什么问题?你的代码已基本完成;缺少的是工厂方法make
不是通用的。它也需要一个类型参数:
public static <T> ArrayListBuilder<T> make() {
return new ArrayListBuilder<T>();
}