请教:如何根据条件定义外部变量的类型?

lsxfhao 2008-04-18 11:17:07
我现在有一个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。请教各位,有没有跟准确的办法?
...全文
109 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dan1980 2008-04-19
  • 打赏
  • 举报
回复
用两个变量不就解决了?楼主表钻牛角尖。用两个变量,包括你后面的处理都会变得简单得多。
lsxfhao 2008-04-19
  • 打赏
  • 举报
回复
问题补充:
是这样的,用户输入一串list,我把它放入MyList里面进行处理。
在用户输入list之前,先选择输入的类型(Integer/String),根据用户的选择我建立相应的MyList(就一个)。
所以MyList定义的是泛型,当创建实例的时候再确定具体类型。

很感谢一楼,但我不用subclass。
KK3K2005 2008-04-18
  • 打赏
  • 举报
回复
可以用工厂模式
duzhonghua 2008-04-18
  • 打赏
  • 举报
回复
感觉1楼的不错,

3楼说反射,怎么个反法,他没有说明
Cspider588 2008-04-18
  • 打赏
  • 举报
回复
楼主可以使用反射试一试。
ssqmnlin 2008-04-18
  • 打赏
  • 举报
回复
我觉得LZ和1楼都可以啊.一次性使用的话,用LZ的就可以了,多次使用的话还是用1L的比较好
临远 2008-04-18
  • 打赏
  • 举报
回复
你这是要做什么?
为什么要生成两个?

按照设计模式,这种情况应该定义两个子类
IntegerList extends MyList<Integer>
StringList extends MyList<String>
Cspider588 2008-04-18
  • 打赏
  • 举报
回复
感觉楼主应该重新设计一下,因为不管用什么方式,如果返回的引用是一个你自己都不知道的类型的引用,又何必使用泛型呢。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧