1 つの引数を持つメソッドがあり、引数のタイプに応じて、メソッドが異なることを行うとします。
メソッドを呼び出しましょうdoMethod()
:
private int doMethod(Class1 x) {
// do something with x
}
private int doMethod(Class2 x) {
// do someting else with x
}
...
私はこれらの方法をいくつか持っています。ここで問題が発生します。上記の他のすべてのクラスのスーパークラスである引数を取る別のメソッドがあります(ただし、実際には常にそのサブクラスの1つです):
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()
これを行うためのより良い方法があるに違いありませんか?現時点では思いつかないので、誰かが私を助けてくれるかもしれません:)
どうもありがとう!