JAVA-重构多个;instanceof";使用列表

JAVA-重构多个;instanceof";使用列表,java,list,refactoring,instanceof,Java,List,Refactoring,Instanceof,现在我正在检查一个对象是否是X,Y,Z的实例,并应用一些方法。(这些只是插图:) 但是,如果我有300个物体要与(例如:汽车,公共汽车,自行车,火车,飞机……相比),我会怎么考虑呢?我想制作一个列表或数组,但初始化它似乎有点长: Car car = new Car(); Bus bus = new Bus(); ... List<Transportation> list_t = Arrays.asList(car, bus, ...); for (Transportation t :

现在我正在检查一个对象是否是X,Y,Z的实例,并应用一些方法。(这些只是插图:)

但是,如果我有300个物体要与(例如:汽车,公共汽车,自行车,火车,飞机……相比),我会怎么考虑呢?我想制作一个列表或数组,但初始化它似乎有点长:

Car car = new Car();
Bus bus = new Bus();
...
List<Transportation> list_t = Arrays.asList(car, bus, ...);
for (Transportation t : list_t) {
    if (X instance of t)
         X.color = RED;
}
Car-Car=新车();
总线=新总线();
...
List\u t=Arrays.asList(汽车、公共汽车等);
用于(运输:列表){
if(t的X实例)
颜色=红色;
}

任何建议都将不胜感激,谢谢。

我要么使用通用的父界面

class Car implements DisplayColour {
    public Color displayColor() {
          return Color.RED;
    }
或者,如果您知道所有可能的类,我将使用HashMap

static final Map<Class, Color> classToColorMap = new HashMap<>(); 
static {
    classToColorMap.put(Car.class, Color.RED);
}
静态最终映射classToColorMap=newhashmap();
静止的{
classToColorMap.put(Car.class,Color.RED);
}

if标准中有很多这样的
if标准吗?是否存在任何类层次结构,或者是否没有具有子类的类型?您可能需要查看Visitor-Pattern。为什么不
X.color=X.getColor()?当然,您可以将其更改为simply
X.setColor()然后你可以通过使汽车、公共汽车等始终保持红色来删除它。我会有很多“如果”,目标只是重新组合不同的类型(例如:如果所有运输的实例使用车轮,如果铝运输的实例使用水)。我可以创建超级类来重新组合它们,但如果有办法的话,那就太好了。你不需要为你的ArrayList创建实例,你可以使用ClassName.class来代替列表类型,使用class来代替传输。我只是想知道。这可以推广到,给定任何一个对象返回相应的颜色基,基于哪个类。例如,有一个函数。returnClassName(对象对象){returns className}。我与提问者无关。我只是对这个问题感兴趣。@Optimuskck您可以做
String className=object.getClass().getName()或者您可以调用
String className=object.getClass().getSimpleName()是。但我要问的是在你的第一个函数中,如果我理解正确,你的第一个函数只检查特定的对象。我的意思是,如果没有对特定对象进行硬编码,我们就不能概括为给定的任何对象,它检查是否属于特定类并返回不同的字符串。但我开始明白我在问一个不同的问题。很抱歉。@Optimuskck您可以通过让类返回一个类似于4轮陆地车辆的类别来概括它,并且您可以将该类别映射到颜色。
static final Map<Class, Color> classToColorMap = new HashMap<>(); 
static {
    classToColorMap.put(Car.class, Color.RED);
}