避免NPE

深度探索:VS2022 牵手 DeepSeek,开启开发新征程 通过将 VS2022 与 DeepSeek 接入,我们成功开启了智能开发的新征程。从前期的硬件准备、软件环境搭建,到实战环节的一步步配置与整合,再到全面的测试与验证,每一个步骤都充满挑战,但也带来了满满的收获。在实际应用中,VS2022 与 DeepSeek 的结合展现出了强大的优势,为开发者带来了更高的效率和更出色的代码质量。无论是代码自动补全、智能代码审查,还是自然语言交互编程,都让开发过程变得更加智能、便捷,极大地提升了开发体验。 阅读详情

在java开发中中NPE异常是常见异常,在阿里java开发手册中就明确强调防止NPE是调用者的责任是程序员基本修养,本篇博客先讲解NUll的知识点,随后讲解利用一些小技巧避免NPE

Null是什么

null是java中的关键字用来表示一些缺失的东西,null是所有引用类型的默认值,在这一部分强调几个关于null的知识点

1

null既不是对象也不是一种类型,它是一种特殊的值,你可以将null赋值任何引用类型,也可以将null强制转化为任何引用类型
如下

String str = (String) null;

强制转化过程编译器并不会报错

2

null的instanceof操作返回false

String str = null;
System.out.println(str instanceof String);
3

在java中null==null返回true

避免NPE

1.1equals方法

public void equals() {
    //代表未知的对象,可能会是NULL也可能不是NULL
    Object unKnowObject = null;
    //这样某些情况下可能会抛出NULLPointException
    System.out.println(unKnowObject.equals("str"));
    //改成如下
    //str一定不会空,所以不会抛出异常
    System.out.println("str".equals(unKnowObject));
}

1.2valueOf与toString

利用String.valueOf避免NPE

public void toMyString() {
    BigDecimal bigDecimal = null;
    //避免如下写法,当对象为空时候会抛出异常
    System.out.println(bigDecimal.toString());
    //使用String静态方法
    System.out.println(String.valueOf(bigDecimal));
}

1.3元素的list避免null

从数据库中检索数据如果结果集为空,利用0元素的list或者set来避免返回null

public void retrieveDataFromDB() {
    //如果没有检索到数据,返回0元素的list,map,set而不是null
    List result = Collections.EMPTY_LIST;
}

1.4拆箱与解包

下面这个例子是我们统计一个数字数组每个数字出现的次数
如下的写法是常见错误

public void unBox() {
    int[] array = {20, 5, 7, 5, 9, 2};
    final Map<Integer, Integer> numCount = new HashMap<>();
    for (int v : array) {
        int result = numCount.get(v);
        numCount.put(v, ++result);
    }
    numCount.entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + " -> " + entry.getValue()));
}

int result=numCount.get(v)取出的数据可能是null,而result是基本类型,对null进行拆箱自然就抛NPE异常了,所以get时需要进一步判断值是否是null

除了上面几种方法之外,我们还可以使用guava或者java8的Optional来避免NPE,下面主要讲解jdk中Optional使用

2.Optional

2.1初始化

初始化Optional有两种方法
1. of: of函数传入的参数不允许为null,否则抛出NullPointerException
2. ofNullable: ofNullable允许参数为空,创建一个不包含任何值得Optional值实例

Optional<String> name = Optional.of("wenruo");
Optional<String> nullableName = Optional.ofNullable(null);

2.2取数据

取数据时可以先isPresient判断是否有具体的数据,然后再get,不过get时候如果Optional没有数据就会抛异常

//isPresent函数有具体值得情况下返回true
if (name.isPresent()) {
    System.out.println(name.get());
}
//如果对空类型调用get会抛出异常
System.out.println(nullableName.get());

或者利用lambda表达式在实例有值的时候进行操作

//实例有值的情况下
name.ifPresent(value -> System.out.println(value));

2.3在无值情况下指定值

orElse和orElseGet可以在无值的情况下指定值,orElse可以无值的情况下指定字符串默认值
而orElseGet可以利用Supplier接口生成默认值

System.out.println(nullableName.orElse("* empty *"));
System.out.println(nullableName.orElseGet(() -> {
    int i = 5;
    return "default value";
}));

2.4值不存在的情况下抛自定义异常

自定义异常

private class ValueAbsentException extends Throwable {
    public ValueAbsentException() {
        super();
    }
    public ValueAbsentException(String message) {
        super(message);
    }
}

自定义在值不存在的情况下抛出指定异常

try {
    nullableName.orElseThrow(ValueAbsentException::new);
} catch (ValueAbsentException e) {
    e.printStackTrace();
    System.out.println("exception caught");
}

3.Optional扩展

3.1map

Optional还有其他的常用操作

//map可以返回任意类型
Optional<String> upperName = name.map(value -> value.toUpperCase());
System.out.println(upperName.orElse("no value found"));

3.2flatMap

//flatMap返回值必须是Optional类型
name = name.flatMap((value) -> Optional.of(value.toUpperCase()));
System.out.println(name.orElse("No Value Found"));

3.3filter

Optional<String> longName = name.filter(value -> value.length() > 10);
System.out.println(longName.orElse("the string length less than 10"));
嵌入式工程师成长之路(0)----认识元件 在电子设计与维修中,认识元件是成功的关键!面对琳琅满目的电阻、电容、电感与二极管,样子形式千奇百怪,你是否也曾陷入困难? 本文基于行业权威分类标准,结合十年工程师实战经验,深度解析4大类、30+子类电子元件的核心特性、应用场景与避坑指南,助你从“小白”秒变“电子高手”! 阅读详情

相关推荐

从建模到调参:基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程解析

本文详细解析了基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程,涵盖运动学建模、仿真环境搭建、PID控制器设计与实现等关键环节。通过Simulink仿真和可视化调试技巧,帮助开发者掌握移动机器人运动控制的核心技术,提升轨迹跟踪精度与性能优化能力。

weixin_28717683的博客 240

java npe是什么_NPE问题(一)

最近在看Java_manual.pdf,其中有一点值得反思:“防止 NPE,是程序员的基本修养。”NPE(Null Pointer Exception)一直是我们最头疼的问题,也是最容易忽视的地方,先总结几条不同场景的解决方案,望后续补充。1.RPC调用某个规定好的接口,如获取某一范围内查询结果,返回结果我们约定好是List。若没有结果,我们是返回null还是Collections.emptyLi...

weixin_36013970的博客 4036

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3164

java编码的一些经验之谈

java开发的一些经验笔记

niceHack的博客 586

C++动态规划详解

动态规划思想 一、动态规划概念: 动态规划(dp)是研究多步决策过程最优化问题的一种数学方法。在动态规划中,为了寻找一个问题的最优解(即最优决策过程),将整个问题划分成若干个相应的阶段,并在每个阶段都根据先前所作出的决策作出当前阶段最优决策,进而得出整个问题的最优解。即记住已知问题的答案,在已知的答案的基础上解决未知的问题。 在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后

weixin_51951103的博客 2万+

Simulink与C/C++的无缝对接:自定义结构体变量导入实战指南

本文详细介绍了如何将C/C++自定义结构体导入Simulink环境,实现无缝数据对接。通过编写标准C头文件、配置MEX编译环境(如MinGW),并利用`Simulink.importExternalCTypes`函数,可将结构体转换为Simulink Bus对象,从而提升复杂系统模型的可读性、可维护性及仿真与代码生成效率。

weixin_29093017的博客 481

高效处理NPE(空指针)异常的方法(一)

Optional类高效处理空指针异常

weixin_45236540的博客 2727

win10 运行lisflood_8踩过的坑

1、安装cuda及VS2019 https://www.bilibili.com/read/cv7335974/ 2、netcdf.h头文件找不到问题 https://www.cnblogs.com/lyggqm/p/12926974.html https://blog.youkuaiyun.com/u011954296/article/details/54617048 3、编码问题 https://blog.youkuaiyun.com/qq_33485434/article/details/81196843 4、

我的笔记 4115

Java - NPE(NullPointerException);Optional

空指针异常。

MinggeQingchun的博客 880

TypeScript领域建模实战:基于斯坦福本体论七步法构建健壮数据模型

在软件工程中,领域建模是连接业务需求与技术实现的关键桥梁,其核心在于对业务概念、属性及其关系的显式定义与规范。通过系统化的建模方法,开发者能够将模糊的领域知识转化为清晰、可扩展且类型安全的数据结构,从而在编译时捕获潜在错误,提升代码质量与可维护性。这一过程的技术价值在于实现了从业务逻辑到类型系统的无损映射,确保了设计的一致性。在实践中,结合TypeScript的静态类型检查与Zod的运行时验证,可以构建起从概念到代码再到数据库的三层一致性约束。本文以电商、博客等常见应用场景为例,深入解析如何运用源自斯坦福知

weixin_42551967的博客 383

利用恒源云在云端租用GPU服务器训练YOLOv8模型(包括Linux系统命令讲解)

为当涉及到深度学习的训练任务时,GPU的计算能力是不可或缺的。相对于传统的中央处理器(CPU),图形处理器(GPU)具有更强大的并行计算能力,能够显著加速深度学习模型的训练过程。深度学习算法通常涉及大量的矩阵运算和张量操作,而GPU的并行计算架构使得它们能够高效地执行这些计算,从而加速模型训练的速度。恒源云是一个经济高效的云计算平台,您可以通过恒源云的控制台或者命令行界面来管理实例、上传和下载数据、执行训练任务等。

Snu77的博客 6721

java字段为null时,get取值会出现java.lang.NullPointException异常

java取值为null如何避免抛出空指针异常

初心不改 3903

Open3D 从体素网格构建八叉树【2025最新版】

从体素网格构建八叉树,博客长期更新,本文最近更新时间为:2025年1月1日。

点云侠的博客 34万+

Hutool如何避免NPE

Hutool工具包提供多种方案避免Java开发中的NPE问题:1)判空工具类预先防御;2)Optional包装实现链式安全调用;3)断言工具强制参数校验;4)集合操作返回空集合替代null;5)日期数值智能转换;6)Bean安全属性访问。通过防御式编程、最小化null传播、优先使用工具类等原则,结合日志监控和静态分析工具,可有效降低空指针异常风险,提升代码健壮性。

weixin_66095070的博客 801

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

避免NPE的出现

作为一个经常看到NPE异常的人,我觉得有必要写一篇博客来总结遇到的问题和解决办法,希望借此能减少开发和上线时出现的问题。 什么是NPE 首先,null是一个关键字,和static和public一样,而且它是大小写敏感的。 其次,所有的基本类型都有默认值,比如int的默认值为0,Boolean的默认值为false,而null是任何引用类型的默认值。 null可以赋值给任何引用类型,也能被转化为任何...

yzy_1215的博客 1153

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JDK8-Optional类避免NPE

1.需求分析 调用RPC返回结果、包装类转简单类型,拆箱过程最容易出现NPE问题。JDK8之前需要小心翼翼对各种类型进行判空,可通过JKD8-Optional类来预发未知的NPE错误。 2.关于避免NPE的常识 【强制】所有POJO类属性必须使用包装数据类型 【强制】所有RPC方法的返回和参数必须使用包装数据类型 【推荐】所有局部变量使用基本简单数据类型 Ps: POJO类属性没有初值是提醒...

侠客小虎的博客 6829

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

如何避免 Java NPE(NullPointerException) 空指针问题

NPE出现的根本原因是开发者忽略了潜在的空值,那么我们在写自己方法时候,就尽量避免返回null值,从源头上解决NPE问题的出现。

weixin_56602545的博客 2083

避免枚举获取时空指针NPE

避免枚举获取时空指针NPE

weixin_51119359的博客 581

java如何避免NullPointerException(空指针异常,NPE)

万恶NullPointerException 如何避免 应该这样做 ..........

wubingyuqq的博客 2650

【Java基础系列】避免NPE的方法

在 Java 编程语言中,NPE 异常是指 NullPointerException 异常。当尝试访问或操作一个空对象(即 null)时,就会抛出此异常。简单来说,当您尝试在代码中引用一个未初始化的对象或变量时,就可能会遇到 NPE 异常。通常,它是由于代码中缺少必要的错误检查而导致的。处理这个异常的最佳方式是在编码过程中避免其发生。在 Java 中,NullPointerException(NPE)是最常见的异常之一。这种异常通常发生在应用程序试图使用值为 null 的引用类型变量时。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 1078

避免 Java NPE 异常的 10 大优化手段(附代码示例)

在方法入口处显式校验参数,快速失败(Fail-Fast),避免空值传递到下游逻辑。避免调用方因未判空导致 NPE,遵循 “返回空集合而不是 null” 原则。Apache Commons 或 Guava 提供安全的空值处理工具。通过代码规范、语言特性、工具约束,将 NPE 消灭在编码阶段。结合 IDE 或 Lombok 在编译期检查空值风险。通过工具在编译期或代码审查阶段发现潜在 NPE。强制调用方处理空值场景,减少遗漏检查的风险。)的自动拆箱可能引发 NPE。,避免条件分支判断。

吖脖(博) 661

Java编程中避免NPE的十个最佳实践

例如,可以使用Optional.ofNullable()将可能为null的值包装起来,然后使用orElse()或orElseGet()方法提供默认值,这样可以有效避免NPE。对于复杂的对象图遍历,使用专门的工具类(如Apache Commons Lang中的ObjectUtils)进行安全的深度null检查。这些工具提供了安全获取嵌套对象属性的方法,避免了繁琐的null检查代码。通过创建一个表示空值的特殊对象(实现相同的接口但方法为空操作),可以避免null检查并使代码更加面向对象。

u013808580的博客 450

Java 8 Optional:优雅地避免 NPE

优雅地避免 NPE

coolcooldeteng的博客 538

深入解析 Java Optional:避免 NPE 的最佳实践与代码示例

创建 Optional: 不能为null: 允许null: 创建空Optional判断是否有值(不推荐)获取值get()(不推荐)转换值组合 OptionalorElse()这样,你可以在 Java 项目中更优雅地处理null,减少 NPE 发生的可能性。🚀。

wolf23151269的博客 553

如何避免NPE(NullPointException)

首先声明一个 User 对象,接下来所有代码可能都会用到这个对象做演示,在下面将不在赘述。很简单,不上代码,上图片: 1.自动解箱抛 NPE 代码只有一行,再简单不过了: int method() { return new User().getId(); } 踩坑姿势:包装类型为 null 时,进行自动转换为基本数据类型报错。解决方案:返回之前进行判断与处理或者改为相同类型。  ...

fighting_DW 1273

Java使用Optional避免NPE

使用Optional类优雅避免空指针异常,以及其他Optional的使用场景介绍,举例说明Optional的所有使用方法。

qq_34378496的博客 866
上一篇: EnumMap
下一篇: Runtime
光与热
博客等级 码龄10年 55粉丝 126原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值