0

我有一个抽象类,称为A和两个继承的类:BC. 我有一个带参数的方法:

myMethod (final A a)

对于实例化对象的类型,我想做不同的事情。我该怎么做?

一个不错的选择是遵循另一种设计模式,但我现在不允许更改我的代码。

谢谢。

4

2 回答 2

5

使用instanceof关键字。例如:

if (a instanceof B) {...}
else if (a instanceof C) {...}
else {...}
于 2013-01-17T20:00:49.350 回答
2

使用instanceof运算符:

myMethod (final A a) {
  if(a instanceof B) {
    //...
  } else if(a instanceof C) {
    //...
  } else {
    throw new IllegalArgumentException("Unknown type: " + a);
  }
}

但请记住,这是违背所有 OO 原则的糟糕做法。

于 2013-01-17T20:00:35.193 回答