instanceof キーワードと isInstance() メソッドは両方ともオブジェクトのクラスをチェックするために使用されますが、両者の違いは何ですか?次の記事は、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 サイトの他の関連記事を参照してください。