これが私の全体的なワークフローです。最初にインターフェースを作成します。
public interface foo {
void bar(Baz b);
}
次に、たとえば、すべてが上記のインターフェイスを実装するさまざまなオブジェクトを含むベクトルを作成します。
myVector.add(new Ex); //both Ex and Why implement foo.
myVector.add(new Why);
そして最後に、インターフェースを使用します。
for(int i=0; i<myVector.size(); i++) {
myVector.get(i).bar(b);
}
ただし、明らかな理由により、これによりコンパイル時エラーが発生します。
メソッドbar()は、タイプObjectに対して未定義です。
ExとWhyは関連していないため、キャストは機能しません。Exへのキャストをキャッチしてみてください。それからなぜ恐ろしい回避策です。ExとWhyの両方を拡張するBar_doersも、インターフェイスがなくなるため、簡潔に聞こえません。
オブジェクトが特定のクラスのものであるかどうかではなく、オブジェクトが特定のインターフェイスを実装するかどうかを気にする操作を実行するにはどうすればよいですか?