假设我有一个带有一个参数的方法,并且根据参数的类型,该方法应该做不同的事情。
让我们调用方法doMethod()
:
private int doMethod(Class1 x) {
// do something with x
}
private int doMethod(Class2 x) {
// do someting else with x
}
...
我有几种这样的方法。现在我的问题来了:我有一个不同的方法,它接受一个参数,它是上面所有其他类的超类(但实际上它总是它的子类之一):
private void otherMethod(SuperClass obj) {
// I do something clever with obj,
// which is the super class of Class1, Class2, .. Classn
// however this method is always called with either Class1, Class2, etc.
// never with an instance of SuperClass itself.
// finally I want to execute doMethod() on obj:
int result = doMethod(obj);
// fails because doMethod(SuperClass) does not exist
}
所以最后我最终创建了一个doMethod(Superclass obj)
,检查 obj ,instanceof
然后doMethod()
使用演员表调用。
必须有更好的方法来做到这一点,不是吗?我现在想不出来,所以也许有人可以帮助我:)
非常感谢!