1

次に例を示します。

多くの異なるクラスを処理する基本クラス(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 を実装することはできません。

4

2 に答える 2

0

私も後で考えますが、:

public static boolean isImplementsInterface(Class interfaze, Class clazz) {
    for (Class c : clazz.getInterfaces()) {
        if (c.equals(interfaze)) {
            return true;
        }
    }
    return false;
}

public static void main(String[] args) {
    System.out.println(isImplementsInterface(CharSequence.class, String.class));
}
于 2014-10-03T15:53:28.400 に答える