1. ホーム
  2. java

[解決済み] オブジェクトがインターフェースを実装しているかどうかのテスト

2022-04-26 16:41:01

質問

これはおそらく以前にも質問されたことがあると思いますが、軽く検索してみたところ、C#について質問されたのと同じ質問しか出てきませんでした。 こちらをご覧ください。

私が基本的にやりたいことは、与えられたオブジェクトが与えられたインターフェイスを実装しているかどうかをチェックすることです。

私は一種の解決策を考え出したが、これはifやcase文で頻繁に使用するには快適ではない、そして私はJavaが組み込みのソリューションを持っていないのかと思っていた。

public static Boolean implementsInterface(Object object, Class interf){
    for (Class c : object.getClass().getInterfaces()) {
        if (c.equals(interf)) {
            return true;
        }
    }
    return false;
}


EDIT: OK、回答ありがとうございました。特にDamien PolletとNoldorinには、私の設計を再考させられたので、もうインターフェイスのテストはしないことにしました。

どのように解決するのですか?

その instanceof 演算子は NullPointerException 安全な方法で 例えば

 if ("" instanceof java.io.Serializable) {
     // it's true
 }

は真をもたらします。以来。

 if (null instanceof AnyType) {
     // never reached
 }

が false になる場合 instanceof 演算子はヌルでも安全です(投稿されたコードはそうではありません)。

インスタンスオブ は、ビルトインで、コンパイル時に安全な クラス#isInstance(Object)