instanceof
日本語 | 実体は |
英語 | this instance of that class |
ふりがな | いんすたんすおぶ |
フリガナ | インスタンスオブ |
本当のインスタンスを調べる予約語。
演算子のように機能する予約語。二項演算子のように機能し、「参照型変数 instanceof クラス」という形式で使用することで、「参照型変数」の参照するインスタンスが「クラス」のクラスかそのサブクラスであればtrueを、それ以外はfalseを返す。
インスタンスを調べるもののため、プリミティブ型には使用できない。
ポリモーフィズムにより、参照型変数内に「インスタンスのクラスが分からない」場合に使用することで、インスタンスのクラスを調べることができる。
ただし、本来ポリモーフィズムは「どのように動作するのかをインスタンスに任せる」ものであり、それを「インスタンスのクラスによって処理を変える」のは本末転倒である。便利な予約語ではあるが、この予約語を多用するようなプログラムはそもそもプログラムの構造が誤っていることを疑った方がいい。
演算子のように機能する予約語。二項演算子のように機能し、「参照型変数 instanceof クラス」という形式で使用することで、「参照型変数」の参照するインスタンスが「クラス」のクラスかそのサブクラスであればtrueを、それ以外はfalseを返す。
インスタンスを調べるもののため、プリミティブ型には使用できない。
ポリモーフィズムにより、参照型変数内に「インスタンスのクラスが分からない」場合に使用することで、インスタンスのクラスを調べることができる。
ただし、本来ポリモーフィズムは「どのように動作するのかをインスタンスに任せる」ものであり、それを「インスタンスのクラスによって処理を変える」のは本末転倒である。便利な予約語ではあるが、この予約語を多用するようなプログラムはそもそもプログラムの構造が誤っていることを疑った方がいい。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
Integer integer = new Integer( 100 );
// instanceofで、インスタンスのクラスを調べます。
boolean result = integer instanceof Integer;
System.out.println( result );
// true
// スーパークラスと比較すると一致します。
result = integer instanceof Object;
System.out.println( result );
// true
// 本来、この予約語はポリモーフィズムと組み合わせて使います。
Object object = integer;
// このobject変数に入っているインスタンスのクラスを調べるために使います。
result = object instanceof Integer;
System.out.println( result );
// true
// このように、参照の型はObjectクラスですが、実際に入っているのは
// Integerクラスのインスタンスへの参照だ、ということが分かります。
result = object instanceof String;
System.out.println( result );
// false
// このように、違うクラスを指定すればfalseが返ります。
// 参照型とは全然関係ないクラスと比較するとコンパイルエラーになります。
// result = integer instanceof String;
// コンパイルエラー:
// 非互換条件オペランド型 Integer と String
// プリミティブ型には使えません。
int i = 100;
// result = i instanceof int;
// コンパイルエラー:
// トークン ")" に構文エラーがあります。正しくは "[" です。
}
}
public class Sample
{
public static void main( String[] args )
{
Integer integer = new Integer( 100 );
// instanceofで、インスタンスのクラスを調べます。
boolean result = integer instanceof Integer;
System.out.println( result );
// true
// スーパークラスと比較すると一致します。
result = integer instanceof Object;
System.out.println( result );
// true
// 本来、この予約語はポリモーフィズムと組み合わせて使います。
Object object = integer;
// このobject変数に入っているインスタンスのクラスを調べるために使います。
result = object instanceof Integer;
System.out.println( result );
// true
// このように、参照の型はObjectクラスですが、実際に入っているのは
// Integerクラスのインスタンスへの参照だ、ということが分かります。
result = object instanceof String;
System.out.println( result );
// false
// このように、違うクラスを指定すればfalseが返ります。
// 参照型とは全然関係ないクラスと比較するとコンパイルエラーになります。
// result = integer instanceof String;
// コンパイルエラー:
// 非互換条件オペランド型 Integer と String
// プリミティブ型には使えません。
int i = 100;
// result = i instanceof int;
// コンパイルエラー:
// トークン ")" に構文エラーがあります。正しくは "[" です。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { Integer integer = new Integer( 100 ); // instanceofで、インスタンスのクラスを調べます。 boolean result = integer instanceof Integer; System.out.println( result ); // true // スーパークラスと比較すると一致します。 result = integer instanceof Object; System.out.println( result ); // true // 本来、この予約語はポリモーフィズムと組み合わせて使います。 Object object = integer; // このobject変数に入っているインスタンスのクラスを調べるために使います。 result = object instanceof Integer; System.out.println( result ); // true // このように、参照の型はObjectクラスですが、実際に入っているのは // Integerクラスのインスタンスへの参照だ、ということが分かります。 result = object instanceof String; System.out.println( result ); // false // このように、違うクラスを指定すればfalseが返ります。 // 参照型とは全然関係ないクラスと比較するとコンパイルエラーになります。 // result = integer instanceof String; // コンパイルエラー: // 非互換条件オペランド型 Integer と String // プリミティブ型には使えません。 int i = 100; // result = i instanceof int; // コンパイルエラー: // トークン ")" に構文エラーがあります。正しくは "[" です。 } }