Java中instanceof关键字的用法总结
发布时间:2022-12-11 15:52:27
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
例子如下:
package com.instanceoftest;
interface A{}
class B implements A{
}
class C extends B {
}
class instanceoftest {
public static void main(String[] args){
A a=null;
B b=null;
boolean res;
System.out.println("instanceoftest test case 1: ------------------");
res = a instanceof A;
System.out.println("a instanceof A: " + res);
res = b instanceof B;
System.out.println("b instanceof B: " + res);
System.out.println("\ninstanceoftest test case 2: ------------------");
a=new B();
b=new B();
res = a instanceof A;
System.out.println("a instanceof A: " + res);
res = a instanceof B;
System.out.println("a instanceof B: " + res);
res = b instanceof A;
System.out.println("b instanceof A: " + res);
res = b instanceof B;
System.out.println("b instanceof B: " + res);
System.out.println("\ninstanceoftest test case 3: ------------------");
B b2=(C)new C();
res = b2 instanceof A;
System.out.println("b2 instanceof A: " + res);
res = b2 instanceof B;
System.out.println("b2 instanceof B: " + res);
res = b2 instanceof C;
System.out.println("b2 instanceof C: " + res);
}
}
/*
result:
instanceoftest test case 1: ------------------
a instanceof A: false
b instanceof B: false
instanceoftest test case 2: ------------------
a instanceof A: true
a instanceof B: true
b instanceof A: true
b instanceof B: true
instanceoftest test case 3: ------------------
b2 instanceof A: true
b2 instanceof B: true
b2 instanceof C: true
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。
用法: 某个实例对象 instanceof 某个类名
instanceof 通常用于根据不同的实例调用不同的方法:
一、在有继承关系的类中我们可以通过多态来调用不同实例中的不同方法:
例1:
有三个类,类名以及它们之间的关系如下
Animal (Superclass) Dog(Subclass) Cat(Subclass)
则可得出如下对象
Animal animal =new Animal (); ====》animal instanceof Animal 返回 true
Dog dog=new Dog();====》dog instanceof Dog 返回 true
Cat cat=new Cat();====》cat instanceof Cat 返回 true
Animal dog=new Dog();====》dog instanceof Animal 返回 true
Animal cat=new Cat();====》cat instanceof Animal 返回 true
Animal dog=new Dog();
Animal cat=new Cat();
List list = new ArrayList();
list.add(dog);
list.add(cat);
Iterator it = list.iterator();
while (it.hasNext()) {
it.next().animalDo();
}
在这里我们可以在Dog与Cat类中重写Animal中的animalDo方法,通过调用animalDo方法,然后会自动根据不同的实例调用不同类中的方法.
二、在没有继承关系的类中,我们可以通过instanceof来判断当前实例,然后很据不同实例调用不同方法:
例2:
Station s = new Station();
Cell c = new Cell();
List list = new ArrayList();
list.add(s);
list.add(c);
Iterator it = list.iterator();
while (it.hasNext()) {
Object obj = it.next();
if (obj instanceof Station ) {
Station s1 = (Station ) obj;
s1.stationDo();
}
if (obj instanceof Cell ) {
Cell c1 = (Cell ) obj;
c1.cellDo();
}
}
在这里我们可以通过instanceof 判断结果,执行不同类中的相应动作方法(stationDo()、cellDo())。
一般在使用无泛型的集合(List、set等)时,比较多的使用 instanceof ,由于集合能够存各种对象,所以在读取时一般要进行相应的判断。


猜你喜欢
- 问题描述提交表单到servlet时出现空白页面,但又网站不报错截图如下遇到这个问题查找了很多,仍没有解决,刚开始接触IDEA,以为是路径配置
- 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。深刻认识Stri
- 本文实例为大家分享了WPF实现3D翻牌式倒计时的具体代码,供大家参考,具体内容如下实现效果如下:思路:使用自定义控件,设置一个背板 MyCa
- 实现效果:奔溃的线程侠:(单线程)主线程正在处理刷新图片的请求时,无法再接受其他请求,从而陷入阻塞的死循环状态。绘制图片import jav
- 引入线程是为了减少程序在并发执行时所付出的时空开销。属性:轻型实体。它不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。独立调度和
- java获取文件的inode标识符,如果文件被删除或者重命名,inode的值会发生变更,因此可以在第一次加载File之后记录inode,后续
- 假如是在同一台机器上开发,前后端分离的工程中出现跨域问题的原因是,前端工程和后端工程运行在不同的端口上。只要协议、域名、端口有一个不同就会产
- 这篇文章主要介绍了Spring boot整合log4j2过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 第一步:下载需要添加的jar包可以在maven库中查找下载,也可以在对应官网下载maven库网址:https://mvnrepository
- 发现问题肯定有人发现连接mysql失败,然后又找不到问题所在,又出现一大最报错,如下图。解决过程 1.先查询自己的java版本,在
- 最近正在学习c#,对其中的方法重写和隐藏的概念很是模糊,现在将其归纳如下:1:方法重写:就是在基类中的方法用virtual关键字来标识,然后
- 一、修改ReadOnly属性1、设置整个DataGridView只读:DataGridView.ReadOnly=true;此时用户的新增行
- 一、使用mybatis-spring-boot-starter1、添加依赖<dependency> <grou
- 本文实例讲述了C#使用IComparer自定义List类实现排序的方法。分享给大家供大家参考。具体如下:List类中不带参数的Sort函数可
- 1.在java代码中(SplashActivity继承AppCompatActivity时无效)2.在manifest.xml中改Theme
- 前几天的一个晚上突然想到微信红包应该有一个随机算法,就自己试着写了下,也不知道对不对,看了看网上的说法,好像到现在为止官方也没有给出一个确切
- 在做多语言版本的时候,日期时间的格式话是一个很头疼的事情,幸好Android提供了DateFormate,可以根据指定的语言区域的默认格式来
- 1. 什么是Volley我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和
- 目录前言实践部分测试部分总结前言今天跟小伙伴们分享一个实战内容,使用Spring Boot+Shiro实现一个简单的Http认证。场景是这样
- 本文实例讲述了C#编程实现四舍五入、向上及下取整的方法。分享给大家供大家参考,具体如下:在处理一些数据时,我们希望能用“四舍五入”法实现,但