我现在有一个class:
class MyList<E> extends ArrayList<E> {...}
我在创建实例的时候,需要通过判别这个list的类型来建立相应的reference。
如果是integer,
MyList<Integer> list = new MyList<Integer>()
如果是string,
MyList<String> list = new MyList<String>()现在的问题是,如果我在if-else里面创建实例,这个变量就变成了局部的。我要得是外部变量。
我暂时是这样做的:
MyList list;
if (type == "Integer") {
    list = new MyList<Integer>();
}
else {
    list = new MyList<String>();
}但是感觉不好,系统也会产生warning。请教各位,有没有跟准确的办法?

解决方案 »

  1.   

    你这是要做什么?
    为什么要生成两个?按照设计模式,这种情况应该定义两个子类
    IntegerList extends MyList<Integer>
    StringList extends MyList<String>
      

  2.   

    我觉得LZ和1楼都可以啊.一次性使用的话,用LZ的就可以了,多次使用的话还是用1L的比较好
      

  3.   

    问题补充:
    是这样的,用户输入一串list,我把它放入MyList里面进行处理。
    在用户输入list之前,先选择输入的类型(Integer/String),根据用户的选择我建立相应的MyList(就一个)。
    所以MyList定义的是泛型,当创建实例的时候再确定具体类型。很感谢一楼,但我不用subclass。