- 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语句,从而进行强制转换调用子类方法
java语言中有向上转型和向下转型,向上转型指父类引用指向子类对象,向下转型需要用到强制转换,关于该详细信息请自己搜索相关资料 ↩︎
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)