首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 是如何优雅地处理NPE问题的

前言 对于 Java 开发者来说,null 是一个令人头疼的类型,一不小心就会发生 NPE (空指针) 问题。也是 Java 语言为人诟病的一个重要原因之一。...Java 中的 null 翻译自 Oracle Java 文档[1] Java 语言中有两种类型,一种是 基本类型 ,另一种是 引用类型。还有一种没有名字的特殊类型,即表达式 null 。...我们可以直接使用 Java 提供的 Optional 来解决空指针问题。接下来我们来研究一下 Java 8 中的 Optional 。 4....Java 8 中的 Optional Java 8 中的 Optional 是一个可选值的包装类。它的意义不仅仅帮我们简化了 NPE 问题的处理,同时也是 Java 函数式编程的一个重要辅助。...因为入参是不可控的,你无法保证入参中的 Optional 是否为 null。这恰恰违背了 Optional 的本意。

2.2K22

Java修饰符是最直白的表述

Java修饰符是让Java变得啰嗦的罪魁祸首之一。其他很多语言并没有这么多修饰符,取而代之的是语法规则,比如Python下划线开头的变量是私有变量,Golang小写字母开头的变量是私有变量。...但是,正因为Java有着明确的修饰符,所以Java代码看起来是最直白的表述。...我们知道Java每个文件是一个类(Class),每个文件夹是一个包(Package),它们彼此之间能不能相互访问,就是通过修饰符决定的。...Java有个很棒的设计:同一个包里面的类不需要import就能直接使用。...需要注意的是,静态方法里面不能使用类的非静态变量。 我以Python举例可以更好说明这一点,Python的类方法第一个入参是cls,如果想访问非类变量,那么入参必须是self。

22620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    可能是你见过的最完善的微前端解决方案

    通常我们第一反应的解法,也是最简单的解法就是与子应用与主框架之间约定好一个全局变量,把导出的钩子引用挂载到这个全局变量上,然后主应用从这里面取生命周期函数。...这个方案很好用,但是最大的问题是,主应用与子应用之间存在一种强约定的打包协议。那我们是否能找出一种松耦合的解决方案呢?...解决方案其实很简单,我们只需要在应用切出/卸载后,同时卸载掉其样式表即可,原理是浏览器会对所有的样式表的插入、移除做整个 CSSOM 的重构,从而达到 插入、卸载 样式的目的。...过程中针对大量微前端实践中的问题,我们总结出了一套完整的解决方案: 在内部得到充分的技术验证和线上考验之后,我们决定将这套解决方案开源出来!...qiankun - 一套完整的微前端解决方案 取名 qiankun,意为统一。

    1.8K00

    可能是最漂亮的Java IO流详解

    最高赞的回答是名为Peter Lawrey的老哥回答的。大家好,我是南哥。一个Java学习与进阶的领路人,今天指南的是Java I/O流,跟着南哥我们一起在Java之路上成长。...本文收录在我开源的《Java学习进阶指南》中,涵盖了想要学习Java、成为更好的Java选手都在偷偷看的核心知识、面试重点。...Java I/O的理解Java I/O有两个参与对象,一个是I/O源端,一个是想要和I/O源端通信的各种接收端,比如程序控制IDEA控制台输出、读取文件A写入文件B等,我们程序要保证的就是IO流的顺利读取和顺利写入...我们看下package java.io包最常用的Reader和Writer接口,他们的作者都是Mark Reinhold。这位老哥是谁?...他是Oracle Java平台组的首席架构师,也是字符流读取器和写入器的首席工程师。这么有来头,看来Java I/O的程序设计不简单,我们可以从中学到不少好用的东西。

    2931310

    技术是最简单的

    技术是最简单的,最简单的也是技术。有很多事情只有我们经历了明白,有些事情我们可以从别人身上学到,有些则永远学不到。 动画片里的人们以一种预想的方式生活着,这个世界被设定为这样那样。...最简单的是赚钱 在《魁拔妖侠传》开始的时候,对于主人公母亲的一个教诲是: 最简单的是赚钱 无论主人公想去做什么,都会补上一句赚钱是最简单的,不要去想别的。...技术是最简单的 过去一直在想的是提高技术,而提高技术本身而成为了一件有意思的事。 没有太多的工作经验,过去一直试想的是: 当我们技术足够好的话,我们可以很容易地从一个项目切换到另外一个项目。...软件开发者最擅长的就是学习。 上面我们假设了一个前提是——最后两个人有差不多一样的技术领域知识。并不是因为这个工作多年的人不再学习了,而是在这个领域里已经没有足够的领域可以学习了。...人际关系 人际关系是一种复杂的东西,相比于上面的领域知识来说。我们需要去处理和不同人之间的关系,无论是在项目上,还是在哪?但是这真的一点都不简单。 技术才是最简单的。

    1K50

    对象拷贝 - 优雅的解决方案 Mapstruct

    我们不喜欢将所有字段都显示给前端,或者我们需要修改字段返回给前端,例如 数据中存储的上架下架是0,1  但是前端需要的字段是true 和 false。...我们都得进行手动判断处理然后编辑成DTO返回给前端 MapStruct是一种类型安全的bean映射类生成java注释处理器。 我们要做的就是定义一个映射器接口,声明任何必需的映射方法。...在编译的过程中,MapStruct会生成此接口的实现。该实现使用纯java方法调用的源和目标对象之间的映射,MapStruct节省了时间,通过生成代码完成繁琐和容易出错的代码逻辑。。...,MapStruct 提供自动处理类型转换,提供如下自动转换 : 1> Java基本数据类型及其相应的包装类型,如 int 和 Integer,boolean 和 Boolean 等生成的代码是 null...= { CustomMapperViaMapper.class } ) public interface SourceTargetMapper {} 本文作者:云杨四海 原文链接:对象拷贝 - 优雅的解决方案

    6.8K20

    Java异常的优雅的设计

    来源:Lrwin lrwinx.github.io/2016/04/28/如何优雅的设计java异常/ 导语 异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经验来谈一谈我是如何对异常进行处理的...如何选择异常类型 异常的类别 正如我们所知道的,java中的异常的超类是java.lang.Throwable(后文省略为Throwable),它有两个比较重要的子类,java.lang.Exception...场景介绍和技术选型 架构描述 正如我们所知,传统的项目都是以MVC框架为基础进行开发的,本文主要从使用restful风格接口的设计来体验一下异常处理的优雅。...如何优雅的设计java异常 domain介绍 根据项目场景来看,需要两个domain模型,一个是用户实体,一个是地址实体....只抛出RuntimeException就算是优雅的抛出异常吗?

    89620

    silverlight:对象拖动的优雅解决方案

    对象拖动是一个老生常谈的话题,在SL上要实现对象拖动,一般有三种思路: 一、基于Canvas绝对定位布局的拖动 这种处理方法最简单,修改对象的Canvas.Top与Canvas.Left即可,简单明了!...二、基于对象Margin值的拖动 Margin是对象的通用属性,通过改变Margin值理论上可在任何布局下,重新定位对象的位置。...三、基于TranslateTransform偏移量的拖动 每个对象都可以设置一系列RenderTransform,以实现变形、旋转、偏移等多种很Cool的效果。...这也是一种通用的做法,不局限于某种特定的布局方法。 而且可以借助Behaviour将其封装起来,直接应用于多个对象,这也是我个人认为最优雅的解决方案。...Blend自带的MouseDragElementBehavior,其内部原理就是利用MatrixTransform形成的偏移。

    605100

    python是门优雅的语言

    没啥技能点,单纯的觉得今天写的代码很优雅(哈哈哈~容许我不要脸一波,不要脸是真的,优雅 也是真的,越看越喜欢这 段代码)!...学python以来第一次体验到大佬们说的python是门优雅的语言 file_list=os.listdir(path) #断言函数,满足条件继续执行,即如果文件数量不是1直接报错 assert len...(file_list)==1 file=file_list[0] data_path=path+file #定义要读取的列 usecols=['商家编码','CC','宝贝ID','库存'] #获取当前年份...sql_name,data,db_name) print("-"*10+date+'库存数据入库完成'+"-"*10) #删除文件 os.remove(data_path) 这样看可能体会不了我现在的心情...,来给你们看一眼 不优雅的(不优雅才是常态,今天可能开挂了!)

    30320

    优雅的处理你的Java异常

    本文介绍 本文仅按照业务系统开发角度描述异常的一些处理看法.不涉及java的异常基础知识,可以自行查阅 《Java核心技术 卷I》 和 《java编程思想》 可以得到更多的基础信息....常常,我们读罢了各种java的书,异常的各种机制,特性都很清楚,但是始终还是不知道如何使用,甚至背下了概念,却不知道如何致用....有效性检查,可以交给java的校验框架执行,比如JSR303. 假设用户提交的数据经过验证都合法,还是有一些情况是不能调用修改逻辑的. 要修改的用户ID不存在. 用户被锁定,不允许修改....对于前3种,我们认为是有效性检查失败,第4种属与我们无法处理的异常,第5种就是程序员bug. 现在的问题是,前三种情况我们如何通知用户呢?...换言之,没有这样的主机是异常,没有这样的用户不是异常了么? 所以一定要弄明白什么是用异常来控制逻辑,什么是定义程序异常.

    51530

    优雅的JAVA工具库LOMBOK

    优雅的Java工具库Lombok 最近在公司的项目中看到了对于Lombok的应用,通过@Data注解标注POJO,省略了大量的getter/setter代码,原先冗长的POJO在瘦身之后直接变得干净、清爽...,程序员再也不需要去关注那些长长的方法,只需要集中注意力于字段field之中 Lombok简介 Lombok是一个非常实用的Java工具库,有效地简化Java代码的冗长。...Data,是@Data的一个变种。...它标注的类和字段都会被声明为final @Builder注解 @Builder注解为类生成builder api以供调用。Builder是一种解决包含数量巨大且繁杂的字段的类的一种构建方式。...Sneaky的意思是偷偷摸摸地,@SneakyThrows注解的作用就是取代try...catch代码块,自动生成相应的try...catch代码块

    53250

    如何优雅的设计 Java 异常

    导语 异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经验来谈一谈我是如何对异常进行处理的。...如何选择异常类型 异常的类别 正如我们所知道的,java中的异常的超类是java.lang.Throwable(后文省略为Throwable),它有两个比较重要的子类,java.lang.Exception...场景介绍和技术选型 架构描述 正如我们所知,传统的项目都是以MVC框架为基础进行开发的,本文主要从使用restful风格接口的设计来体验一下异常处理的优雅。...如何优雅的设计java异常 domain介绍 根据项目场景来看,需要两个domain模型,一个是用户实体,一个是地址实体....只抛出RuntimeException就算是优雅的抛出异常吗?

    2.1K00

    优雅处理你的Java异常

    作者:叶知泉 来源:https://my.oschina.net/c5ms/blog/1827907 本文介绍 本文仅按照业务系统开发角度描述异常的一些处理看法,不涉及java的异常基础知识,可以自行查阅...《Java核心技术 卷I》 和 《java编程思想》 可以得到更多的基础信息。...常常,我们读罢了各种java的书,异常的各种机制,特性都很清楚,但是始终还是不知道如何使用,甚至背下了概念,却不知道如何致用。...有效性检查,可以交给java的校验框架执行,比如JSR303. 假设用户提交的数据经过验证都合法,还是有一些情况是不能调用修改逻辑的。...换言之,没有这样的主机是异常,没有这样的用户不是异常了么? 所以一定要弄明白什么是用异常来控制逻辑,什么是定义程序异常。

    1.6K21

    你写过的最蠢的代码是?

    你写过的最蠢的代码是? 在我们走上编程道路的初始阶段,面对着神秘而复杂的代码世界,总会产生种种不解和疑惑。每个初学者都会经历从零开始的过程,而在这个过程中,我们很可能会写下一些让自己哭笑不得的代码。...本文会涵盖多种编程语言,包括但不限于JavaScript、Python和Java,以及不同的编程场景,如循环优化、错误处理和代码重构等。...一个简单的 print('Hello World') 语句就能完成同样的任务。 无尽的循环 循环是编程中的基础结构之一。...user_input == 'q': break 编程陷阱:常见的代码错误 错误的错误处理 错误处理是编程中非常重要的一环。...总结 回顾过去,我们每个人都可能会笑话自己曾经写过的愚蠢代码。然而,正是这些愚蠢的代码,成为了我们成长的动力和经验的积累。通过不断地学习和实践,我们可以避免重复过去的错误,写出更加优雅、高效的代码。

    10910

    机器学习是最容易得到错误结论的一种解决方案

    永远保持怀疑 机器学习是最容易得到错误结论的一种解决方案。和编程、做表格、或者纯粹的数学建模不同,机器学习是由数据驱动,并有很强的黑箱性。因此很多时候容易得出似是而非的结论。...举个最简单的例子:伪相关/虚假相关(spurious correlation),两个变量很容易看起来有很强的相关(参看图1和2),然而这仅仅是偶然。...寻找“最小预测单元”,避免追求通过一个模型预测多个目标 最清晰易懂,且容易证明正误的模型就是目标明确的模型。我们得知业务需求以后,尽量把预测范围控制好,不要被同时实现多个目标所诱惑。...),得到一个稀疏的表示,方便进行矩阵计算 此处的重点是:部分价值 >>毫无价值。...模型选择、评估与调试 模型选择是建立在对于问题的理解上,一般是启发式(heuristic),也就是基于经验所确定的。 优先选取符合问题假设的模型。

    63550

    有点优雅的处理你的 Java 异常

    .不涉及java的异常基础知识,可以自行查阅 《Java核心技术 卷I》 和 《java编程思想》 可以得到更多的基础信息....常常,我们读罢了各种java的书,异常的各种机制,特性都很清楚,但是始终还是不知道如何使用,甚至背下了概念,却不知道如何致用....有效性检查,可以交给java的校验框架执行,比如JSR303. 假设用户提交的数据经过验证都合法,还是有一些情况是不能调用修改逻辑的. 要修改的用户ID不存在. 用户被锁定,不允许修改....对于前3种,我们认为是有效性检查失败,第4种属与我们无法处理的异常,第5种就是程序员bug. 现在的问题是,前三种情况我们如何通知用户呢?...换言之,没有这样的主机是异常,没有这样的用户不是异常了么? 所以一定要弄明白什么是用异常来控制逻辑,什么是定义程序异常.

    62510
    领券