私のタイトルが正しいとは確信していませんが、そうでない場合は修正されると確信しています.
次のように helpIt メソッドをオーバーロードしようとしています。
class Animal{}
class Dog extends Animal{}
class Foo implements AnimalHelper
{
@Override
public void helpAnAnimal( Animal a )
{
helpIt( a );
}
private void helpIt( Dog d )
{}
private void helpIt( Animal a )
{}
}
問題は、動物が Dog であっても、これが helpIt( Dog d ) メソッドを決して呼び出さないことです。このアプローチを使用したのは、クラス Foo が AnimalHelper の helpAnAnimal メソッドをオーバーライドするためです。
ここで何か不足していますか?instanceof をチェックしてからキャストする必要がないことを願っています。これは .Net で問題なく動作したと思いますが、その記憶は少し薄れており、おそらく正しくありません。