范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java8之后的那些新特性(五)HelpfulNullPointerExceptions

  这一周继续聊一聊Java 8之后的那些新特性,今天聊一个看似价值不大的新特性,但实质它却与Java语言的一个经常出错的异常有关联。
  写Java程序的,无论如何也不会不知道一个异常,那就是NullPointerException,也就是空指针异常。在Java程序的世界中,相当一部分的错误可能都可以归类到这个错误。
  而我记得早些年我在用Java做Android时,引发App闪退的最多的一个原因就是NullPointerException。而如果你用Kotlin来写Android,则这个错误可以大大减少。
  这是 Java 8之后的那些新特性 系列的第五篇,这个系列其它文章为:Java 8之后的那些新特性(一):局部变量var Java 8之后的那些新特性(二):文本块 Text Blocks Java 8之后的那些新特性(三):Java System Logger Java 8之后的那些新特性(四):网络请求 Java Http Client one billion dollar mistake
  在编程的行业中,也许你听到过一个说法,那就是"one billion dollar mistake",用中文来说就是 十亿美元的错误
  这个讲的是什么呢,其实它讲的就是Null References这个概念。
  Null References是Richard Hoare在1965年发明的,当时他主导设计一门面向对象的语言 ALGOL W ,基于所有指针引用安全的考量,设计出了Null References。而Java语言后面则同样实现了这个设计。
  这个设计被Richard Hoare后面自我反省为一个错误,称因为这个设计,引发了巨大的经济上的损失。许多程序上的错误可能就是因为检查空这个没有做,导致系统服务不正常,应用App闪退等。
  Richard Hoare称之为one billion dollar mistake。 Java的改进
  而事实上,只要在设计上稍等改变,就可以避免这个错误,使得程序更健壮。现代的一些诸如Kotlin或Swift等语言就在语言设计上避免开了这个问题。
  当然,Java这个问题点上也不是说没有改进,在Java 8时Java 引进了Optional的概念,而在Java 14的时候,又引进了Helpful NullPointerExceptions。
  Optional这个立意虽然不错,但实质上它对解决Java这个NullPointerException并无太多实质帮助,这个可以我后面单独再详细聊一聊这个点。
  而今天我要聊的Helpful NullPointerExceptions则并不是为了解决NullPointerException,它是为了解决NullPointerException异常信息中有时出现的混淆的错误。 NullPointerException的混淆
  在Java 8为主流的情况下,当你的代码遇上NullPointerException的时候,有时候是很难搞的清具体是谁导致的空指针异常。
  以如下代码为例:    @Test    void testNullPointerException(){        Employee employee = randomEmployee();        String addressName = employee.getAddress().getName();    }
  在这个代码中,如果遇上空指针异常,你得到的信息提示是: Exception in thread "main" java.lang.NullPointerException
  这个空指针异常会带来的混淆就是,你不能从这个错误的提示上明确,究竟是employee为空,还是address.getAdress()得到的Address实例为空,这两种情况都可能会导致这个错误。
  所以呢,在Java 14的时候,对这个点做了优化,添加了Helpful NullPointerExceptions Helpful NullPointerExceptions
  Helpful NullPointerExceptions的目的就只有一个:
  让空指针异常提供更为明确,不会引发混淆
  当你在使用Java 14以及之后的JDK版本时,上面这段同样的代码,你得到异常提示信息就是: java.lang.NullPointerException: Cannot invoke "org.myddd.mock.Employee.getAddress()" because "employee" is null
  看到没,这个提示相比过往,是不是更明确了,不会引发你的混淆了呢? 回到NullPointerException
  好了,这个特性就是这么简单的一个特性,对Java这门语言来说,考虑到存在大量的NullPointerException,也还是挺有作用的。
  那回到我在前面所说的一个问题就是,就Java 8的Optional特性而言,一方面你会发现实际使用这个特性的人很少,大家基本还是按照旧有方式来写Java代码,另一方面你就算使用Optional来写你的代码,也还是避免不了NullPointerException呢。
  这是一个很有趣的问题,特别是当你参考同类语言,诸如Kotlin或Swift是如何来处理这个点时,就会对这个现象有更深刻的理解。
  我们可以好好思考及探究下这现象背后的原因。
  后续写完这个系列,我再专门来聊一聊这个有趣的现象以及我的理解。
  这周就是这样了,下周还是聊Java 8之后的那些新特性。
  在Java语言中,很多人会非常喜欢用一个叫lombok这个框架来简化Java的代码,而我个人是不主张使用类似的东西。而在Java中,实质上引入了另一个特性,那就是Record Class,它也有着非常类似的效果。
  下周就聊一聊Record Class这个新特性,可以说它是Java 8之后非常有价值的一个新特性了。

网上买的电视靠谱吗?经过实体店导购孜孜不倦的洗脑,现在99的人都相信网上买电视质量差,不如实体店买电视质量好,甚至到了偏执的地步,那么我今天就来说一说,买电视是去网上买还是实体店买,还有智能电视线上款如何实现两台电视机共享一个机顶盒?很多时候家庭宽带只安装一个机顶盒连接一个电视,如果家中两台电视那么需要增加一个机顶盒,并绑定相应的账号,交月租才能使用。题主在问题中询问如何实现两台电视共享一个机顶盒。根据机顶盒的怎么将手机上的投影到电视上或墙上?我们日常在家里的时候,使用手机观看直播或者电影,有时候觉得屏幕太小,会选择将手机投屏到更大的显示器上面观看,那么具体我们该如何操作呢?下面小编给大伙说说。手机投屏到电视上这个比较简电脑显示器能改装成电视吗?家里闲置的电脑显示器只有显示功能,通过改造是可以用来作为小电视使用的,作为餐厅或者卧室电视是不错的选择。有两种方式,方式1使用机顶盒连接,方式2连接MTVBox相当于给显示器连接了家里装一套卡拉OK要多少钱?什么价位才有包间的效果?普通的一套卡拉OK设备,大概在3000元12000元左右。一般的配置包括点歌机(也可以用电脑或手机代替)一拖二U段麦克风合并功放机卡包音箱,总价约30008000元。如果要做到专业农村过年家里没有wifi,到邻居家蹭信号,邻居居然不给密码,说影响效果,怎么办?给你,是情分不给你,是本分。WiFi是人家的,你本来就没有要求别人给你的权利。我家wifi我也不会随便给别人,特别是住在隔壁的邻居,如果是住的比较远的,来我家玩我会给他们,而且是我目前拍照效果最好的手机是哪款?这取决于你如何定义拍照效果。如果你对照片要求比较苛刻,需求偏向专业性,那么你只要对照DxOMark榜单来看就可以。DxO已经按照专业需求,将手机拍照详细地按照曝光色彩对焦纹理噪点伪盘点常用的20余款3D打印软件,你喜欢用哪一款?盘点常用的20余款3D打印软件,你喜欢用哪一款?本文将主要介绍在3D打印中常见的3D打印上位机软件,这类3D软件将为用户提供较大的帮助,通过对这类软件的分类,用户可以选择使用最适合麻省理工科技评论发布2022年全球十大突破性技术科技创新推动了人类发展,让人类拥有美好的生活。近日,麻省理工科技评论(MITTechnologyReview)发布了2022年全球10项突破性技术。1。密码的终结几十年来,我们需要WebGL与Canvas的显存与内存使用分析分析一下两者的内存使用。按2048为基准,进行相关测试,现在移动设备基本都达到这个分辨率。Canvas模式如果是纯使用Canvas渲染,不涉及到WebGL,内存占用还是比较好计算的乘数智之风,助阅读推广阅读是个人获取知识开阔视野增长智慧和提升人文素养的重要途径,同时其作为文化发展的外在表现,也是一个国家发展精神传承文明以及屹立于世界民族之巅的内生驱动力。顾名思义,阅读推广是社会组
农业银行存款利率有多高?假设50万元存三年,一年能有多少利息?引言除此之外,受中华民族传统思想的影响,很多老百姓都更偏向于安全性有保障的理财方式。这也就意味着,储蓄存款在广大老百姓心目中的地位依然十分崇高。那么在2021年的今天,如果将50万工资新标准出炉,10月起,统一按照这个标准上调,3类人获益前言最低工资上调听到最低工资上调这个消息,我相信很多人心里面都是开心的,即便是有的人跟最低工资没有太多的关系,毕竟听到工资上调这几个字,就是令人兴奋的。实际上,最低薪资上涨受益的肯新穷人群体出现,有房有车但生活品质很低,但愿你不在其中引言就总体而言,在2020年我国经济总量突破了1000000亿元大关,人均GDP的水平也进一步提高。但是这并不意味着每个人的生活水平都达到了令人满意的程度,而根据每个人收入水平的不农村信用社存款利率上涨?假如现在存入20万,一年的利息有多少?引言银行也有具体的分类,我国有四大银行分别是建设,工商,中国,农业发展银行。剩余还有一些银行包括农商,交通以及各市的银行,除去四大行,剩余的银行比如邮政,农商等都担负着一些政府补助继妻子难娶后,又一社会怪像出现!多数年轻人表示很无奈引言现在国家社会经济发展迅速,人们也过上了温饱富裕的生活。现代人们的家庭随着计划生育政策的推行也发生了巨大的变化。很多80后90后的人都是家中的独生子女,享受了独一无二的独生女子女医保其实还有二次报销?满足3个条件即可申请,早了解早受益引言现在,教育住房看病可以算作是老百姓最关心的三个话题,而医保应运而生,成为一项新的福利,为大家的看病治病提供相应的保障。普遍的认知是医保可以报销一定比例的医疗费用,但是许多人不知彩民纷纷质疑彩票有假?连续出两期相同号码,是否有人操控?前言现如今,我国有近三亿的人都在购买彩票,由此可以看出,彩票对于我国国民的诱惑力是非常大。就拿双色球彩票来说,一等奖就有上千万的奖金,每一注彩票购买只需要两块钱,如果说运气特别好,新农合缴费又要上涨?今年迎来4大改革,弃缴的人要亏大了前言现在人们生病了也不敢进医院了。新农合的政策对于农村人来说是非常好的,因为每年需要缴纳的费用很少,每个人只需要交纳不到300块钱,就可以享受很高的医疗报销。另外的一些医疗保险每年这次国家动真格了!香烟行业迎来大调整,全国控烟行动已启动引言吸烟的危害人们都知道,电视和媒体也在一再宣传吸烟有害健康,但是我国的吸烟者数量依然非常庞大。国家卫健委在5月份发布的数据报告中可以看到,在20年期间,我国的吸烟人数已经超过了3银行卡存款超过这个数就封顶多数人不知道,银行职员也不知道引言银行作为我国重要的社会机构之一,发挥着不可替代的作用,特别是支付方式发生大变革的时代,每个人的生活都与银行息息相关。储蓄业务可能是人们在银行办理得比较多的业务,但是许多客户并不银行定期存款利率3。85,不过需要5万起存,是否值得储户去存呢?前言特别是疫情过后,世界各地很多房地产企业都面临破产,房价也上涨得慢了,所以投资房地产并不吃香了,而且还有一定的风险。所以现在投资什么才赚钱呢。根据人的生存本能,只要没有太大的把握