当前位置: 首页 > news >正文

空指针异常的触发

 面向对象分析:

当你要吃饭,饭是对象,提供吃饭这个功能,所以饭为null时,你去调吃饭这个功能,就是去操作饭这个抽象模型,但这个模型是null,就是空指针异常了,但如果有了饭这个对象,你调吃饭这个功能,饭可以返回null呀

Byte contentType = example.getContentType(); // contentType 是 null

 

不会抛出NullPointerException的原因在于作用域和操作的性质。以下是详细的解释:


1. example对象本身不为null

首先,NullPointerException通常发生在尝试对null对象引用进行操作时。在你的代码中,example是一个对象引用,如果example本身为null,那么调用example.getContentType()会直接抛出NullPointerException。但在这个场景中,example显然不是null,否则代码无法正常执行到getContentType()方法。

java复制

Example example = new Example(); // example 不为 null
Byte contentType = example.getContentType(); // 正常调用

2. getContentType()方法的返回值为null

NullPointerException不会因为方法返回null而抛出。NullPointerException通常发生在以下几种情况:

  • 尝试对null对象引用调用方法或访问字段。

  • 尝试对null对象引用进行某些操作(如数组访问、switch语句等)。

在你的代码中,example.getContentType()返回了一个Byte类型的值,而Byte是一个包装类,它可以接受null作为有效值。因此,当getContentType()返回null时,这个null值会被正常赋值给contentType变量。

java复制

Byte contentType = example.getContentType(); // contentType 可能是 null,但不会抛出异常

3. Byte是一个包装类

Byte是一个包装类,它可以接受null值。当你将null赋值给一个Byte类型的变量时,这本身是合法的操作。因此,即使getContentType()返回null,也不会有任何问题。

java复制

Byte contentType = null; // 合法操作

4. 为什么不会抛出NullPointerException

  • example对象本身不为null:你可以正常调用它的方法。

  • getContentType()返回null是合法的Byte类型可以接受null值。

  • 赋值操作本身不会触发异常:将null赋值给一个变量是完全合法的操作,不会导致任何运行时错误。

只有当你尝试对contentType进行某些操作(如调用方法、作为switch语句的条件等)时,才会触发NullPointerException。例如:

java复制

switch (contentType) { // 如果 contentType 是 null,这里会抛出 NullPointerExceptioncase 1:System.out.println("Type 1");break;
}

5. 总结

NullPointerException不会因为方法返回null而抛出,而是因为对null对象引用进行非法操作才会抛出。在你的代码中:

java复制

Byte contentType = example.getContentType(); // contentType 是 null
  • example对象本身不为null,因此可以正常调用getContentType()方法。

  • getContentType()返回的null值被赋值给contentType变量,这是一个合法的操作。

  • 只有当你尝试对contentType进行某些操作(如调用方法、作为switch语句的条件等)时,才会触发NullPointerException

因此,这段代码不会抛出NullPointerException,而是正常执行并将null赋值给contentType

相关文章:

空指针异常的触发

面向对象分析: 当你要吃饭,饭是对象,提供吃饭这个功能,所以饭为null时,你去调吃饭这个功能,就是去操作饭这个抽象模型,但这个模型是null,就是空指针异常了,但如果有了饭…...

尚硅谷爬虫note15n

1. 多条管道 多条管道开启(2步): (1)定义管道类 (2)在settings中开启管道 在pipelines中: import urllib.request # 多条管道开启 #(1)定义管道类 #(2)在setti…...

基于SSM+Vue的汽车维修保养预约系统+LW示例

1.项目介绍 系统角色:管理员、员工、用户功能模块:用户管理、员工管理、汽车类型管理、项目类型管理、维修/预约订单管理、系统管理、公告管理等技术选型:SSM,vue(后端管理web),Layui&#xff…...

【商城实战(13)】购物车价格与数量的奥秘

【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配&#xf…...

在线json转ArkTs-Harmonyos

轻松将 JSON 数据转换为类型安全的 ArkTs 接口。快速准确地生成代码,提升开发效率,告别手动编写,让您的开发流程更加流畅! gotool...

Cannot resolve symbol ‘view‘ Androidstudio报错解决办法

报错原因 出现 Cannot resolve symbol view 错误是因为代码中的 view 变量未正确定义或不在当前作用域内。以下是常见场景和解决方法: 场景 1:在 点击事件监听器 中获取 view 如果代码在 OnClickListener 的 onClick 方法中,view 是方法的参…...

三级缓存架构

三级缓存架构是一种通过分层缓存设计来优化系统性能、降低数据库负载、提高数据访问效率的解决方案,尤其适用于高并发、高吞吐量的业务场景(如电商、社交平台、实时推荐等)。其核心思想是通过多级缓存逐层过滤请求,减少对底层存储…...

webshell一些上传心得

我们以upload-labs为基础 一、前端拦截: 如第一关 工作方式: 直接在前端拦截 绕过方式: 因为没有限制后端,所有可以用bs 绕过前端修改格式即可 将需要上传的php文件改成jpg格式 使用burp suite 拦截上传后,使用re…...

doris:阿里云 MaxCompute

MaxCompute 是阿里云上的企业级 SaaS(Software as a Service)模式云数据仓库。 什么是 MaxCompute 连接 MaxCompute​ 示例​ -- 1. 创建Catalog。 CREATE CATALOG mc PROPERTIES ("type" "max_compute","mc.default.projec…...

MyBatis-Plus 分页查询接口返回值问题剖析

在使用 MyBatis-Plus 进行分页查询时,很多开发者会遇到一个常见的问题:当分页查询接口返回值定义为 Page<T> 时,执行查询会抛出异常;而将返回值修改为 IPage<T> 时,分页查询却能正常工作。本文将从 MyBatis-Plus 的分页机制入手,详细分析这一问题的根源,并提…...

【面试】框架

框架 1、介绍一下Spring 的 IOC2、将一个类声明为 Bean 的注解有哪些3、Bean 的作用域有哪些4、Spring 框架中的 Bean 是线程安全的吗5、Spring 容器对象的懒加载6、Spring 容器中的 bean 生命周期7、谈谈自己对于 Spring DI 的了解8、注入 Bean 的注解有哪些9、Spring Boot 如…...

MWC 2025 | 紫光展锐联合移远通信推出全面支持R16特性的5G模组RG620UA-EU

2025年世界移动通信大会&#xff08;MWC 2025&#xff09;期间&#xff0c;紫光展锐联合移远通信&#xff0c;正式发布了全面支持5G R16特性的模组RG620UA-EU&#xff0c;以强大的灵活性和便捷性赋能产业。 展锐芯加持&#xff0c;关键性能优异 RG620UA-EU模组基于紫光展锐V62…...

《苍穹外卖》SpringBoot后端开发项目重点知识整理(DAY1 to DAY3)

目录 一、在本地部署并启动Nginx服务1. 解压Nginx压缩包2. 启动Nginx服务3. 验证Nginx是否启动成功&#xff1a; 二、导入接口文档1. 黑马程序员提供的YApi平台2. YApi Pro平台3. 推荐工具&#xff1a;Apifox 三、Swagger1. 常用注解1.1 Api与ApiModel1.2 ApiModelProperty与Ap…...

Mysql内置函数

日期函数&#xff1a; 例如&#xff1a; select current_date();---打印日期 select current_time()----打印时间 select current_timestamp();打印时间戳 select now(); ----日期时间 select date(‘2020-10-01 00:00:00’); ----提取日期进行打印&#xff1a; 也可以配合…...

一文了解汽车图像传感器

2024年底,安森美做了题为"How Automotive Image Sensors Transform the Future of Autonomous Driving"的演讲,这里结合其内容对自动驾驶图像传感器做一个介绍。 当前的自动驾驶感知技术主要有两大技术路线:一种是仅使用摄像头作为传感器进行信息采集的纯…...

cocos creator使用mesh修改图片为圆形,减少使用mask,j减少drawcall,优化性能

cocos creator版本2.4.11 一个mask占用drawcall 3个以上&#xff0c;针对游戏中技能图标&#xff0c;cd,以及多玩家头像&#xff0c;是有很大优化空间 1.上代码&#xff0c;只适合单独图片的&#xff0c;不适合在图集中的图片 const { ccclass, property } cc._decorator;c…...

面向高质量视频生成的扩散模型方法-算法、架构与实现【附核心代码】

目录 算法原理 架构 代码示例 算法原理 正向扩散过程&#xff1a;从真实的视频数据开始&#xff0c;逐步向其中添加噪声&#xff0c;随着时间步 t 的增加&#xff0c;噪声添加得越来越多&#xff0c;最终将原始视频数据变成纯噪声。数学上&#xff0c;t 时刻的视频数据与 t…...

vue3框架的响应式依赖追踪机制

当存在一个响应式变量于视图中发生改变时会更新当前组件的所以视图显示&#xff0c;但是没有视图中不写这个响应式变量就就算修改该变量也不会修改视图&#xff0c;这是为什么&#xff1f;我们能否可以理解宽泛的理解为vue组件的更新就是视图的更新&#xff0c;单当视图中不存在…...

Ubuntu本地部署Open manus(完全免费可用)

目录 1.介绍 2.环境搭建 3.更改配置 4.运行 1.介绍 关于由于邀请码的限制&#xff0c;导致很多用户无法顺利体验manus带来的ai agent体验&#xff0c;但是最近开源的open manus是另一个不错的选择。 先来看看运行的结果&#xff1a; 我让open manus帮我打开小米的主页&am…...

MacOS Big Sur 11 新机安装brew wget python3.12 exo

MacOS Big Sur 11,算是很老的系统了&#xff0c;所以装起来brew有点费劲。 首先安装brew 官网&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 官网加速&#xff1a; 按照官网的方法&#xff0…...

基于USB Key的Web系统双因素认证解决方案:构建安全与便捷的登录体系

摘要 在网络安全威胁日益严峻的背景下&#xff0c;传统的“用户名密码”认证方式已难以应对钓鱼攻击、密码窃取等风险。上海安当基于USB Key技术&#xff0c;推出了一套面向Web系统的双因素认证解决方案&#xff0c;通过硬件与密码学的深度融合&#xff0c;实现用户身份的高强度…...

项目工坊 | Python驱动淘宝信息爬虫

目录 前言 1 完整代码 2 代码解读 2.1 导入模块 2.2 定义 TaoBao 类 2.3 search_infor_price_from_web 方法 2.3.1 获取下载路径 2.3.2 设置浏览器选项 2.3.3 反爬虫处理 2.3.4 启动浏览器 2.3.5 修改浏览器属性 2.3.6 设置下载行为 2.3.7 打开淘宝登录页面 2.3.…...

数据安全_笔记系列12:数据访问控制中的三个管理员权限划分

数据安全_笔记系列04&#xff1a;数据访问控制中的“三权分立”机制详解 文章链接&#xff1a;https://blog.csdn.net/fen_fen/article/details/145852242 数据安全_笔记系列12&#xff1a;数据访问控制中的三个管理员权限划分 这三个角色的职责和权限划分。 系统应具有相互独…...

通义千问本地配置并实现微调

通义千问本地配置并实现微调 最小Qwen模型大小942mb from modelscope import snapshot_download model_dir = snapshot_download(“qwen/Qwen2.5-0.5B”, cache_dir=“./models2.5”) Qwen2.5-0.5B:942MB from modelscope import snapshot_download model_dir = snapshot_d…...

文件上传漏洞(upload靶场)

目录 Pass-01&#xff1a;前端绕过 方法一&#xff1a;浏览器禁用js 方法二:直接修改或删除js脚本 方法三&#xff1a;修改后缀绕过 Pass-02:服务器检测 Pess-03:黑名单绕过 Pass-04:.htaccess文件 Pass-05:windows特性和user.ini 方法一&#xff1a;php.自动解析为ph…...

Leetcode 刷题记录 05 —— 普通数组

本系列为笔者的 Leetcode 刷题记录&#xff0c;顺序为 Hot 100 题官方顺序&#xff0c;根据标签命名&#xff0c;记录笔者总结的做题思路&#xff0c;附部分代码解释和疑问解答。 目录 01 最大子数组和 方法一&#xff1a;动态规划&#xff08;卡达尼算法&#xff09; 方法…...

随机过程的核心概念与Matlab实现

摘要 本文系统讲解随机过程的核心理论与Matlab实现&#xff0c;涵盖随机变量分布、蒙特卡罗仿真、信息熵计算及平稳过程特性。通过高斯、瑞利分布的生成代码、蒙特卡罗积分估计、窄带信号仿真等案例&#xff0c;结合功率谱分析与自相关函数推导&#xff0c;演示随机过程建模与…...

git worktree的使用

git worktree 是 Git 提供的一个强大功能&#xff0c;允许你在同一个仓库中同时创建多个工作目录&#xff0c;每个目录对应一个分支&#xff0c;从而实现并行开发。以下是 git worktree 的常用命令和使用方法&#xff1a; 1. 创建新的工作目录&#xff08;Worktree&#xff09…...

delphi 正则提取html中的内容

function ExtractTextFromHTML(const HTML: string): string; var RegEx: TRegEx; begin Result := HTML; // 移除<script>标签及其内容 Result := TRegEx.Replace(Result, <script.*?>.*?</script>, , [roIgnoreCase, roSingleLine]); // 移除<s…...

深度学习系列79:Text2sql调研

参考 https://github.com/topics/text-to-sql 这里是一些资源&#xff1a;https://github.com/eosphoros-ai/Awesome-Text2SQL/blob/main/README.zh.md 这里是综述文章&#xff1a;https://zhuanlan.zhihu.com/p/647249972 1. 数据集 Spider: 一个跨域的复杂text2sql数据集&a…...

分布式锁—5.Redisson的读写锁一

大纲 1.Redisson读写锁RedissonReadWriteLock概述 2.读锁RedissonReadLock的获取读锁逻辑 3.写锁RedissonWriteLock的获取写锁逻辑 4.读锁RedissonReadLock的读读不互斥逻辑 5.RedissonReadLock和RedissonWriteLock的读写互斥逻辑 6.写锁RedissonWriteLock的写写互斥逻辑…...

【AI热点】Manus技术细致洞察报告(篇2)

针对大家对Manus产品褒贬不一的现象&#xff0c;基于近期对Manus的多方实测、公开信息与开源竞品的比对分析而撰写&#xff0c;旨在为从业者、技术爱好者以及潜在用户提供一个较为系统、专业的视角。报告将围绕Manus的核心原理、功能特点、技术亮点、常见应用场景与不足&#x…...

虚幻基础:动画层接口

文章目录 动画层&#xff1a;动画图表中的函数接口&#xff1a;名字&#xff0c;没有实现。动画层接口&#xff1a;由动画蓝图实现1.动画层可直接调用实现功能2.动画层接口必须安装3.动画层默认使用本身实现4.动画层也可使用其他动画蓝图实现&#xff0c;但必须在角色蓝图中关联…...

C#的简写技巧

在C#中&#xff0c;有许多简写技巧可以让你的代码更加简洁高效&#xff0c;以下是一些常见的&#xff1a; 1. 变量声明与初始化 使用 var 关键字 &#xff1a;当你能从初始化表达式中推断出变量类型时&#xff0c;可以使用 var 关键字代替显式的类型声明。例如&#xff1a; va…...

【js逆向】

地址&#xff1a;aHR0cHM6Ly93d3cud2VpYm90b3AuY24vMi4wLw f12进入 debugger&#xff0c;过debugger 查看预览数据 全局搜索 请求网址中的 api.weibotop.cn 在下方疑似找到了加密和解密的函数 断点调试 控制台输出 那个n就是 常见的 cryptoJs库 const cryptoJs require(cry…...

汽车一键启动按钮更换注意事项

汽车一键启动开关更换教程 一键启动开关是现代汽车中常见的便捷配置&#xff0c;但随着时间的推移&#xff0c;这个部件可能会出现失灵的情况。当一键启动开关发生故障时&#xff0c;许多车主选择自行更换。以下是整理的一键启动开关更换教程&#xff1a; 更换前的准备 选择匹…...

为wordpress自定义一个留言表单并可以在后台进行管理的实现方法

要为WordPress添加留言表单功能并实现后台管理&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 创建留言表单 首先&#xff0c;你需要创建一个留言表单。可以使用插件(如Contact Form 7)或手动编写代码。 使用Contact Form 7插件 安装并激活Contact Form 7插件。 创建…...

Hive函数、外部表和分区表

目录 1. Hive自定义函数1.1 pom.xml中依赖配置1.2 Hive自定义函数示例代码1.3 打包并演示 2. 外部表3. 分区表参考 1. Hive自定义函数 Hive中简单的自定义函数需要继承org.apache.hadoop.hive.ql.udf.generic.GenericUDF&#xff0c;并且实现其中的三个方法&#xff1a; 方法功…...

再聊 Flutter Riverpod ,注解模式下的 Riverpod 有什么特别之处,还有发展方向

三年前我们通过 《Flutter Riverpod 全面深入解析》 深入理解了 riverpod 的内部实现&#xff0c;而时隔三年之后&#xff0c;如今Riverpod 的主流模式已经是注解&#xff0c;那今天就让我们来聊聊 riverpod 的注解有什么特殊之处。 前言 在此之前&#xff0c;我们需要先回忆…...

每日一题----------String 和StringBuffer和StringBuiler重点

本质&#xff1a;是一个char字符数组存储字符串 总结&#xff1a; 1.如果字符串存在大量的修改操作&#xff0c;一般使用StringBuffer或者StringBuilder。 2.如果字符串存在大量的修改操作&#xff0c;并且单线程的情况&#xff0c;使用StringBuilder。 3.如果字符串存在大…...

使用AI一步一步实现若依前端(5)

功能5&#xff1a;侧边栏菜单动态显示 功能4&#xff1a;首页使用Layout布局 功能3&#xff1a;点击登录按钮实现页面跳转 功能2&#xff1a;静态登录界面 功能1&#xff1a;创建前端项目前言 在若依中&#xff0c;侧边栏显示的菜单项&#xff0c;是根据登录用户的角色动态显…...

如何在需求分析阶段考虑未来扩展性

在需求分析阶段考虑未来扩展性的关键在于 前瞻规划、灵活架构、标准设计。其中&#xff0c;前瞻规划尤为重要&#xff0c;因为通过全面分析业务发展趋势与技术演进&#xff0c;能够在初期设计阶段预留足够扩展空间&#xff0c;降低后期改造成本&#xff0c;为企业长期发展奠定坚…...

平面机械臂运动学分析

平面机械臂运动学分析 一 整体概述1 研究步骤&#xff1a; 二 正向1 几何分析2 matlab 仿真模拟&#xff08;1&#xff09;实现效果&#xff08;2&#xff09;matlab代码&#xff1a; 3 DH矩阵计算法&#xff08;1&#xff09;计算公式&#xff08;2&#xff09;计算结果验证&a…...

1688店铺所有商品数据接口详解

​​一、接口概述淘宝开放平台提供 1688.items.onsale.get/taobao.item_search_shop 接口&#xff0c;可批量获取店铺在售商品列表&#xff0c;包含商品 ID、标题、价格、销量、图片等核心信息。该接口适用于商品库管理、竞品监控、数据分析等场景 ​二、接口调用流程 前期准…...

华为hcia——Datacom实验指南——三层交换和ARP的工作原理

什么是三层交换 三层交换是指连接在同一台三层交换机上&#xff0c;不同vlan用户&#xff0c;不同网段ip&#xff0c;通过vlanif接口进行数据交换。 什么是ARP协议 通过网络层的ip地址解析成数据链路层的mac地址。 说白了就是通过目标ip地址去问他对应的mac地址是多少。 A…...

手脑革命:拆解Manus AI如何用“执行智能体”重构生产力——中国团队突破硅谷未竟的技术深水区

第一章&#xff1a;Manus AI 的技术演进与行业背景 1.1 从工具到智能体&#xff1a;AI 技术的范式跃迁 人工智能的发展经历了从规则驱动&#xff08;Rule-based&#xff09;到统计学习&#xff08;Statistical Learning&#xff09;&#xff0c;再到深度学习&#xff08;Deep…...

【算法】二叉树的递归遍历

前序遍历 void preOrder(Node *node){if(node ! nullptr){cout << node->data_ << " ";preOrder(node->left_);preOrder(node->right_);}} 中序遍历 void inOrder(Node *node){if (node ! nullptr){inOrder(node->left_);cout << n…...

中级网络工程师面试题参考示例(1)

一、基础理论 1. OSI七层模型与TCP/IP四层模型的区别是什么&#xff1f;请举例说明第三层&#xff08;网络层&#xff09;和第四层&#xff08;传输层&#xff09;的核心协议。 参考答案&#xff1a; OSI七层模型分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用…...

Java并发 vs 并行:本质区别与应用场景全解析(易混概念)

并发 vs 并行&#xff1a;本质区别与应用场景全解析&#xff08;易混概念&#xff09; 一、核心区别&#xff1a;从定义出发 在计算机科学中&#xff0c;并发&#xff08;Concurrency&#xff09; 和 并行&#xff08;Parallelism&#xff09; 是两种完全不同的任务处理模型&a…...

深度评测DeepSeek、ChatGPT O1和谷歌Gemini AI应用开发场景 - DeepSeek性能完胜!

下面我会展示我为期一周的实验结果&#xff0c;创作不宜&#xff0c;希望大家关注我&#xff0c;以后多多互3&#xff01;前一阵我在互联网上看到很多关于DeepSeek R1的讨论&#xff0c;这个开源模型据说可以媲美&#xff0c;甚至优于像OpenAI o1这样的付费模型。 由于我在日常…...