java解惑50--类型

2017-06-30  本文已影响0人  猴猴猪027

理论

  1. instanceof 左侧和右侧应该有父子关系,如果没有,编译不通过;
  2. 理论上null是任何引用类型的实例,但是null instanceof 引用类型,结果是false,这样做是为了避免在返回true后,对null进行转型,调用方法抛出NullPointerException
  3. 在返回结果前加上括号,括号内放转型的类型,要求目标类和源类具有父子关系,不管是否具有转型的可能,只要满足父子关系编译就能通过

案例

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

上一篇 下一篇

猜你喜欢

热点阅读