使用尚未确定的类型初始化列表

时间:2015-07-02 20:20:14

标签: java generics

我真的希望你能帮助我。 对于我的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()方法不能包含类型声明,并且仍然提供整数和字符串的副本。

1 个答案:

答案 0 :(得分:0)

那么,你究竟遇到了什么问题?你的代码已基本完成;缺少的是工厂方法make不是通用的。它也需要一个类型参数:

public static <T> ArrayListBuilder<T> make() {
    return new ArrayListBuilder<T>();
}