java中instanceof的使用

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语言中有向上转型和向下转型,向上转型指父类引用指向子类对象,向下转型需要用到强制转换,关于该详细信息请自己搜索相关资料 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值