Java instanceof

目录

简介

示例

注意事项

应用场景


简介

  • instanceof 是 Java 的保留关键字
  • 也称为类型比较运算符,因为它将实例与类型进行比较
  • 它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型
  • instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false
  • 说明下:类的实例包含本身的实例,以及所有直接或间接子类的实例
  • instanceof左边显式声明的类型与右边操作元必须是同种类或存在继承关系,也就是说需要位于同一个继承树,否则会编译错误
  • 基本语法:

示例

  • 首先,我们将创建一个 Round 类:
  • 接下来,我们将创建一个扩展 Round 的 Ring 类:
  • 然后我们可以使用instanceof来检查Ring的实例是否是Round类型:

注意事项

  • 左边的对象实例不能是基础数据类型
  • 左边的对象实例和右边的类不在同一个继承树上是不行的
  • null用instanceof跟任何类型比较时都是false
  • 在 Java 中,每个类都隐式继承自 Object 类;因此,对 Object 类型使用 instanceof 运算符将始终计算为 true

应用场景

  • instanceof一般用于对象类型强制转换
  • 在转换未知对象之前,应始终使用 instanceof 检查
  • 这样做有助于避免运行时出现 ClassCastException
  • Stream API – 在投射之前使用instanceof过滤类型
  • 我们经常使用 Stream 的 map() 方法将 A 类型集合转换为 B 类型集合
  • 如果类型转换是通过类型转换完成的,我们可能需要在执行类型转换之前检查类型以避免 ClassCastException
  • 比如,假设我们有一个 Round 实例流:
  • 如上面的代码所示,roundStream 对象包含两个 Ring 对象和一个 Circle 实例
  • 现在如果我们将 roundStream 转换为 Ring 列表而不检查类型,则会引发 ClassCastException,因为 Circle 不是 Ring:
  • 但是如果我们在 map() 调用之前过滤 Ring 对象,我们将得到预期的列表:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海外代理IP在跨境电商中的五大应用场景

在我国跨境电商的发展中,海外代理IP的应用日益广泛,它不仅帮助商家成功打入国际市场,还为他们在多变的全球电商竞争中保持优势。下面是海外代理IP在跨境电商中五个关键的应用场景。 1、精准的市场分析 了解目标市场的消费者行为、产品趋势以…

[蓝桥杯 2023 省 B] 飞机降落(暴搜DFS+贪心)

总结:为什么你看到题想不出来怎么写呢,我想不到这道题还会用到dfs的思想,顶多能知道可能会有贪心,还是得多做题。 这道题让我想起来导弹拦截和借教室,记得有空做做!!不要研究难题,把…

打造专属云存储:私有Docker Registry全面解读与实战部署

在容器技术大行其道的今天,Docker Registry作为容器镜像的中央仓库,扮演着至关重要的角色。当公开的官方镜像库无法满足企业对安全性、可控性及定制化的需求时,搭建私有Docker Registry就显得尤为必要。本文旨在深入剖析私有Docker Registry的…

题目15—三数之和

题目来源于LeetCode 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重…

2000-2021年各省社会消费水平数据(原始数据+计算结果)(无缺失)

2000-2021年各省社会消费水平数据(原始数据计算结果)(无缺失) 1、时间:2000-2021年 2、来源:各省年鉴、国家统计局 3、范围:31省 4、指标:社会消费品零售总额(亿元&a…

Echarts横向柱形图

项目原型图如下: 实际上就是设置两个y轴,第一个显示底色柱子,另一个只显示真实数据的柱子,在这里只显示y轴,x轴不显示.. this.middleLeftOption {tooltip: {trigger: axis,axisPointer: {}},legend: {data: [回退次数],y: bottom},grid: {left: 3%,righ…

C#使用Entity Framework Core处理数据库(二)

Entity Framework Core(EF Core)是一个轻量级、跨平台的对象关系映射(ORM)框架,用于在.NET应用程序中处理数据库操作。它提供了一种将数据库中的数据映射到.NET对象模型的方法,使开发人员可以使用面向对象的…

面试算法-46-三数之和

题目 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 …

国内 AI 工具集

序号 类型 AI工具名称 入口 功能 聊天/内容生成 1 文心一言 https://yiyan.baidu.com 综合型AI:内容生成、文档分析、图像分析、图表制作、脑图…… 2 通义千问 https://tongyi.aliyun.com 综合型AI:内容生成、文档分析、图像分析…… 3 Kimi(月之暗面…

理论学习:with torch.no_grad()

如果不加上“with torch.no_grad():”,模型参数会发生改变吗? 如果不使用with torch.no_grad():,在进行模型推理(即计算outputs_cls net(inputs[batch_size//2:])这一步)时,模型参数不会发生改变&#xf…

JAVA实战手册-开篇总述

该专题以实战为出发点,总结概述了实际工作中常用的java知识点,掌握了这些知识点,日常工作开发以及面试都不在话下。 话不多说,直入正题,以下为JAVA知识点概括总结(总计涵盖了10大类78小项) 针对…

实验7-1-4 选择法排序(PTA)

题目: 本题要求将给定的n个整数从大到小排序后输出。 输入格式: 输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。 输出格式: 在一行中输出从大到小有序的数列,相邻数字间有一个空格&am…

关于防火墙

文章目录 一、安全技术和防火墙1、安全技术2、防火墙的分类2.1 按保护范围划分2.2 按实现方式划分2.3 按网络协议划分2.3.1 包过滤防火墙2.3.2 应用层防火墙 二、Linux 防火墙的基本认识1、Netfilter2、防火墙工具介绍2.1 Iptables2.2 Firewalld2.2.1 软件包2.2.2 管理工具 2.3…

在类Unix环境下使用Python

获得并安装Python的最新版本 在Linux中 Python预装在大多数Linux发行版上,并作为一个包提供给所有其他用户。 但是,您可能想要使用的某些功能在发行版提供的软件包中不可用。这时您可以从源代码轻松编译最新版本的Python。 如果Python没有预先安装并且…

【企业战略转型】某音响制造公司发展战略转型管理咨询项目纪实

案例:【客户评价】日本M汽车音响有限公司田总经理:受经济大环境的影响,我公司原有的依赖企业下订单的业务模式受到很大的影响,企业进入“不进则退”的重要转型阶段。当企业生存的关键因素,我们作为典型的OEM汽车音响代…

利用Python爬虫获取xx数据

目录 一、前言 二、requests 请求库 1、requests 安装 2、requests 的基本使用 三、Beautiful Soup 1、Beautiful Soup 安装 2、BeautifulSoup对象介绍与创建 3、BeautifulSoup对象的find方法 四、总结 一、前言 什么是爬虫? 网络爬虫(又被称为…

Hack The Box-Devvortex

目录 信息收集 nmap whatweb WEB web信息收集 wfuzz 漏洞探索 漏洞发现 反弹shell 提权 get user hashcat get root 信息收集 nmap 端口信息收集┌──(root?ru)-[~/kali/hackthebox] └─# nmap -p- 10.10.11.242 --min-rate 10000 Starting Nmap 7…

python基于vue考试分析系统的设计和实现-flask-django-nodejs-php

接着,本文还讨论了该系统的设计目的,还讨论了系统的需求,并提出了整体的设计方案。对于该系统的设计和实现,也都进行了较为详细的讨论,并在此基础上,对考试分析系统系统展开了一些具体的测试。随着电子技术…

解决IDEA创建SpringBoot项目没有Java版本8

原因: spring2.X版本在2023年11月24日停止维护了,因此创建spring项目时不再有2.X版本的选项,只能从3.1.X版本开始选择 而Spring3.X版本不支持JDK8,JDK11,最低支持JDK17,因此JDK11也无法选择了 当然&…

24.1 SpringCloud电商实战一刷

24.1 SpringCloud微服务电商项目实战 1. 周介绍2. 功能模块介绍2.1 前台客户端2.2 后台管理端3. Eureka注册中心3.1 创建Eureka服务1. 目录结构2. 依赖引入3. 启动类EurekaServerApplication4. 配置文件application4. 用户模块4.1 核心功能4.2 表结构4.3 用户模块初始化