インスタンス キーワードの Java での使い方
Javaでは、「instance」キーワードは、オブジェクトが特定のクラスまたはそのサブクラスのインスタンスであるかどうかを判定します。型チェックと型変換に使用されます。
以下は「instance」キーワードの使いかたです。
- オブジェクトが特定のクラスのインスタンスかどうかを判定するために使用
文法:オブジェクト instanceof クラス名
オブジェクトがマイクラスのインスタンスの場合: { … }
- 特定インターフェースの実装クラスのインスタンスかどうかを判定するために用いる:
オブジェクト instanceof インターフェイス名
もし (obj が MyInterface のインスタンスなら) { … }
- ダウンキャスト(ダウンキャストします)
型チェックしてから型変換をするときは「instance」キーワードが使える
サブクラス型(の)スーパークラスオブジェクト
MyClass obj = (MyClass) オブジェクトをキャストする;
「instance」キーワードで型変換を行うときは、対象が実際に目的の型のインスタンスであることを確認することが必要である。そうでないとClassCastException例外が発生する。そのため、型変換を行う前に「instance」キーワードで型チェックを行うことが望ましい。
翻訳する文を書いてください。
public class Main {
public static void main(String[] args) {
Object obj1 = new MyClass();
Object obj2 = new String("Hello");
if (obj1 instanceof MyClass) {
MyClass myObj1 = (MyClass) obj1;
myObj1.myMethod();
}
if (obj2 instanceof MyClass) {
MyClass myObj2 = (MyClass) obj2; // 这里会抛出ClassCastException异常
myObj2.myMethod();
}
}
}
class MyClass {
public void myMethod() {
System.out.println("MyClass method");
}
}
上のサンプルでは、obj1 は MyClass クラスのインスタンスなので、型変換は安全に行えます。一方、obj2 は String クラスのインスタンスであり、MyClass クラスのインスタンスではないため、型変換すると ClassCastException 例外がスローされます。