Java中instanceof注意的地方


  • instanceof只能用于对象的判断,不能用于基本类型的判断,以下代码会编译不通过
'A' instanceof Character
  • instanceof特有的规则:若左操作数是null,结果就直接返回false,不再运算右操作数是什么类
null instanceof String
  • instanceof操作符的左右操作数必须有继承或实现关系,否则编译会失败,以下代码编译不通过
new Data() instanceof String
  • 注意泛型的情况
    class GenericClass<T>{
        public boolean isDataInstance(T t){
            return t instanceof Date;
        }
    }

    boolean a = new GenericClass<String>().isDataInstance("test");//false
    //T是个String类型,与Date之间没有继承或实现关系,为什么''t instanceof Date''会编译通过呢?那是因为Java的泛型是为编码服务的,在编译成字节码时,T已经是Object类型了,传递的实参是String类型,也就是说T的表面类型是Object,实际类型是String,那''t instanceof Date''这句话就等价于''Object instance ofDate''了,所以返回false就很正常了


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM