使用法:
(クラスの型変数インスタンス | インターフェイス)
効果:
instanceof 演算子は、前のオブジェクトが次のクラスのインスタンスであるか、そのサブクラスや実装クラスであるかを判断するために使用されます。そうである場合は true を返し、そうでない場合は false を返します。
知らせ:
・instanceofの前のオペランドのコンパイル時の型が後続クラスと同じか、親子継承関係にある場合、コンパイルエラーとなります。
簡単な例:
次のようにコードをコピーします。
/**
* インスタンスオブ演算子
* @author 管理者
*
*/
パブリック クラス TestInstanceof {
public static void main(String[] args) {
//hello を宣言するときに Object クラスを使用すると、コンパイルされた hello の型は Object になります
//オブジェクト クラスはすべてのクラスの親クラスですが、hello の実際の型は String です
オブジェクト hello = "こんにちは";
//String は Object のサブクラスであり、instanceof 操作を実行して true を返すことができます
System.out.println("文字列はオブジェクト クラスのインスタンスですか:"
+ (こんにちは、オブジェクトのインスタンス));
//真実
System.out.println("文字列は String のインスタンスですか:"
+ (こんにちは、文字列のインスタンス));
//間違い
System.out.println("文字列は Math クラスのインスタンスですか:"
+ (こんにちは、Math のインスタンス));
//String は Comparable インターフェイスを実装しているため、true を返します
System.out.println("文字列は Comparable クラスのインスタンスですか:"
+(こんにちは、Comparable のインスタンス));
/**
* String は Math クラスでも Math クラスの親クラスでもないため、次のコードは正しくコンパイルされません。
*/
//文字列 a = "こんにちは";
//System.out.println("文字列は Math クラスのインスタンスですか:"
// + (Math のインスタンス));
}
}
実行結果:
次のようにコードをコピーします。
文字列がオブジェクト クラスのインスタンスかどうか: true
文字列が String のインスタンスであるかどうか: true
文字列が Math クラスのインスタンスかどうか: false
文字列が Comparable クラスのインスタンスであるかどうか: true
通常、強制的な型変換を実行する前に、前のオブジェクトが後のオブジェクトのインスタンスであるかどうか、および変換が成功するかどうかが最初に判断され、それによってコードの堅牢性が保証されます。