【发布时间】:2014-10-17 09:41:57
【问题描述】:
假设我有一个 Color 类型的类。我想创建一些子类,Red、Green 和 Blue。然后,在一个完全独立的类中,我有一个名为 Rainbow 的列表,类型为 Color。我希望能够将所有类型的颜色(Red、Greed、Blue)放入列表Rainbow,这样以后我可以搜索列表Rainbow 通过一种颜色来查看它是否包含其中一种颜色。这是我想要完成的一些伪代码:
class Color(){}
class Red extends Color(){}
class Blue extends Color(){}
class Green extends Color(){}
class JustSomeClass(){
List<Color> Rainbow;
Rainbow.add(new Red());
Rainbow.add(new Blue());
Rainbow.add(new Green());
public Color getTypeOfColor(typeOfColor){
for(Color c : Rainbow){
if(c.getType().equals(typeOfColor)){
return c;
}
}
}
}
我对 Java 还不够熟悉,不知道有什么好方法来完成这个任务。有人可以指出我正确的方向吗?
【问题讨论】:
-
您编写的代码几乎可以正常工作。您似乎关心哪一部分?
-
Color是做什么的?您可以使用enum和switch吗?或者,否则,访问者模式会更好。 -
在构造函数或方法中移动
Rainbow.add(new Red());调用。 -
如果没有更多细节,我们很难告诉您这是否是一个好方法。你打算怎么用这个?为什么需要检查颜色?你不能用哈希来检查颜色吗?
-
downvoter 让我知道
Map<String,Color>有什么问题?
标签: java list generics inheritance types