間違ったクラスでinstanceof演算子を使用しようとすると、コンパイルエラー( "Animal can not be String to")に変換されますが、インターフェイスでコンパイルエラーが発生しません。instanceof with an interface
たとえば:行10では、AnimalがStringのサブクラスではないため、コンパイルエラーが発生します。しかし、14行目では、AnimalがListインターフェースを実装していなくても、コンパイルエラーは発生しません。
class Animal {
}
public class InstanceOf {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Animal a = new Animal();
if (a instanceof String){ //line 10
System.out.println("True");
}
if (a instanceof List){ //line 14
System.out.println("True");
}
}
}
質問に正確なエラーメッセージを含めてください。 –
これを考えてみましょう: 'クラスBはAnimal implements List'を拡張します。今度は: 'Animal a = new B();' – njzk2
@ Tunakiあなたは「Dupehammer®」も持っています。なぜそれを閉じなかったのですか? (おそらく:あなたは私と同じように躊躇しています...: - /) – Marco13