我有一个抽象类,称为A
和两个继承的类:B
和C
. 我有一个带参数的方法:
myMethod (final A a)
对于实例化对象的类型,我想做不同的事情。我该怎么做?
一个不错的选择是遵循另一种设计模式,但我现在不允许更改我的代码。
谢谢。
我有一个抽象类,称为A
和两个继承的类:B
和C
. 我有一个带参数的方法:
myMethod (final A a)
对于实例化对象的类型,我想做不同的事情。我该怎么做?
一个不错的选择是遵循另一种设计模式,但我现在不允许更改我的代码。
谢谢。
使用instanceof
关键字。例如:
if (a instanceof B) {...}
else if (a instanceof C) {...}
else {...}
使用instanceof
运算符:
myMethod (final A a) {
if(a instanceof B) {
//...
} else if(a instanceof C) {
//...
} else {
throw new IllegalArgumentException("Unknown type: " + a);
}
}
但请记住,这是违背所有 OO 原则的糟糕做法。