我现在有一个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。请教各位,有没有跟准确的办法?
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。请教各位,有没有跟准确的办法?
为什么要生成两个?按照设计模式,这种情况应该定义两个子类
IntegerList extends MyList<Integer>
StringList extends MyList<String>
是这样的,用户输入一串list,我把它放入MyList里面进行处理。
在用户输入list之前,先选择输入的类型(Integer/String),根据用户的选择我建立相应的MyList(就一个)。
所以MyList定义的是泛型,当创建实例的时候再确定具体类型。很感谢一楼,但我不用subclass。