java中instanceof的使用

java中instanceof的使用,第1张

java中instanceof的使用
  • instanceof的定义

    instanceof用来判断左边 对象 是不是右边类的直接 实例对象子类实例对象

    此处应注意强调字体,表达式左边需要是类实例对象,右边则是类名。

下面是代码实现

Collection list=new ArrayList();				//Collection是集合接口
  • instanceof案例
            Collection list=new ArrayList();
            System.out.println(list instanceof ArrayList);                     //true
            System.out.println(list instanceof Collection);                    //true
            System.out.println(list instanceof Object);                        //true     
            System.out.println(list instanceof LinkedList);                    //false
    

    Object类是所有对象的父类,所以代码第三行结果为true,因为list并不是Linkedlist的直接或间接实例对象,故结果为false

  • 使用场景

    instanceof多使用在向下转型 1 中,由于向上转型后,父类引用指向子类对象,该对象会失去一些子类独有的方法,而进行强制转换时需要判断一下能否进行转换,instanceof就能解决问题。

    向下转型还经常出现在多态中。

     Collection list=new ArrayList();
            list.add("java");
            if(list instanceof ArrayList)
            {
                System.out.println(list.get(0));								//1
                System.out.println(((ArrayList) list).get(0));                  //2
            }
    
    // [java]
    

    代码1报错,因为向下转型后丢失了一些子类特有方法,所以get方法进行报错

    代码2执行成功,且输出结果为[java],这里就体现出了instanceof的作用,通过判断,如果结果为true则会执行if语句,从而进行强制转换调用子类方法


  1. java语言中有向上转型和向下转型,向上转型指父类引用指向子类对象,向下转型需要用到强制转换,关于该详细信息请自己搜索相关资料 ↩︎

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/799397.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存