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…

国内 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小项) 针对…

关于防火墙

文章目录 一、安全技术和防火墙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…

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

案例:【客户评价】日本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也无法选择了 当然&…

【代码】YOLOv8标注信息验证

此代码的功能是标注信息验证,将原图和YOLOv8标注文件(txt)放在同一个文件夹中,作为输入文件夹 程序将标注的信息还原到原图中,并将原图和标注后的图像一同保存,以便查看 两个draw_labels函数,分…

[Linux] 进程间通信基础

💻文章目录 📄前言进程间通信基础概念 管道概念管道的工作原理模拟实现shell中的管道 共享内存概念接口的介绍共享内存的使用 📓总结 📄前言 你是否了解进程间是如何通信的呢?你是否知道管道的工作原理呢?管…

关于Web端 —— UI自动化测试

在手工测试阶段,针对项目输出了测试用例,如果这些测试用例需要在版本迭代的过程中,需要进行回归测试,通过手工重复地执行测试用例,将会耗费大量的人力。 为此应运而生就有了自动化测试,通过使用自动化工具…

【docker】Docker打包SpringBoot镜像

📝个人主页:五敷有你 🔥系列专栏:中间件 ⛺️稳中求进,晒太阳 前置说明 最为原始的打包方式spring-boot-maven-plugin插件jib-maven-plugin插件dockerfle-maven-plugin插件 最为原始的方式 也就是使用Docker的打…

大模型知识库

一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。 1. 下载Langchain-chatchat git clone https://github.com/chatchat-space/Langchain-Chatchat/ 2. 下载大模型和embe…