ホームページ  >  記事  >  Java  >  JavaのinstanceofキーワードとisInstance()メソッドの違いは何ですか?

JavaのinstanceofキーワードとisInstance()メソッドの違いは何ですか?

青灯夜游
青灯夜游オリジナル
2019-03-20 14:48:133718ブラウズ

instanceof キーワードと isInstance() メソッドは両方ともオブジェクトのクラスをチェックするために使用されますが、両者の違いは何ですか?次の記事は、instanceof キーワードと isInstance() メソッドの違いを理解するのに役立ちます。

JavaのinstanceofキーワードとisInstance()メソッドの違いは何ですか?

instanceof キーワードと isInstance() メソッドは両方ともオブジェクトのクラスをチェックするために使用され、どちらもブール値を返します。しかし、主な違いは、オブジェクトのクラスを動的にチェックする場合に生じます。この場合、 isInstance() メソッドは機能しますが、instanceof 演算子ではこれを実現できません。

例を通じて、instanceof キーワードと isInstance() メソッドの違いを見てみましょう。

instanceof キーワードを使用してオブジェクトのクラスを確認します

public class Test 
{ 
    public static void main(String[] args) 
    { 
        Integer i = new Integer(5); 
  
        // 当i是Integer类的实例时,输出true
        System.out.println(i instanceof Integer); 
    } 
}

出力:

true

さて、実行時にオブジェクトのクラスを確認したい場合は、次のようになります。 isInstance()メソッドを使用します。

public class Test 
{ 
    // 此方法告诉我们对象是否是以字符串“c”形式传递名称的类实例。
    public static boolean fun(Object obj, String c) 
                      throws ClassNotFoundException 
    { 
        return Class.forName(c).isInstance(obj); 
    } 
    public static void main(String[] args) 
                      throws ClassNotFoundException 
    { 
        Integer i = new Integer(5); 
  
        // 当i是Integer类的实例时,输出true
        boolean b = fun(i, "java.lang.Integer"); 
  
        // 因为i不是String类的实例,所以输出false
        boolean b1 = fun(i, "java.lang.String"); 
  
        //当integer类扩展number类时,如果我也是number类的实例,则输出true。
        boolean b2 = fun(i, "java.lang.Number"); 
  
        System.out.println(b); 
        System.out.println(b1); 
        System.out.println(b2); 
    } 
}

出力:

true
false
true

注: インスタンス化されていない他のクラスを使用してオブジェクトをチェックすると、instanceof キーワードはコンパイル時エラー (互換性のない条件オペランド タイプ) をスローします。

public class Test 
{ 
    public static void main(String[] args) 
    { 
        Integer i = new Integer(5); 
  
        //报错,因为类型不兼容:Integer不能转换为String
        System.out.println(i instanceof String); 
    } 
}

出力:

demo.java:10: error: incompatible types: Integer cannot be converted to String
System.out.println(i instanceof String); 
                   ^
1 error

推奨される関連ビデオ チュートリアル: 「Java チュートリアル

上記がこの記事の全内容です。学ぶことは誰にとっても役立ちます。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がJavaのinstanceofキーワードとisInstance()メソッドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。