次に例を示します。
多くの異なるクラスを処理する基本クラス(A)があります(すべてPを拡張するB、C、Dとしましょう)。クラス AI では、次のような関数を呼び出す必要があります。
public void doSmth(P variable) {
B b = (B)variable;
b.getSomeImportantInfo();
}
このために、インターフェイス (I) を追加し、B、C、D の実装を定義しようとしています。
問題は、doSmth がこのすべてのクラス (B、C、D) で動作し、それらすべてにこのインターフェイスを実装したくないことです。だから私はこのようなことをしようとしています:
public void doSmth(P variable) {
if(variable instanceof I) {
((I)variable).getSomeImportantInfo();
}
}
しかし、これは機能しません。変数を I にキャストできないと言うからです。
必要な動作を実現するにはどうすればよいですか? また、P を変更して I を実装することはできません。