理论
- instanceof 左侧和右侧应该有父子关系,如果没有,编译不通过;
- 理论上null是任何引用类型的实例,但是null instanceof 引用类型,结果是false,这样做是为了避免在返回true后,对null进行转型,调用方法抛出NullPointerException
- 在返回结果前加上括号,括号内放转型的类型,要求目标类和源类具有父子关系,不管是否具有转型的可能,只要满足父子关系编译就能通过
案例
public class Type1 {
public static void main(String[] args){
String s=null;
System.out.println(s instanceof String);
}
}
这里的返回结果为false
public class Type2 {
public static void main(String[] args){
Type2 t2=(Type2) new Object();
}
}
编译通过,运行期间抛出异常
java.lang.ClassCastException: java.lang.Object cannot be cast to com.carease.type.Type2
at com.carease.type.Type2.main(Type2.java:8)
public class Type3{
public static void main(String[] args){
System.out.println(new Type3() instanceof String);
}
}
编译不通过,inconvertable types