特性脸书删除特朗普发布的虚假视频

脸书删除特朗普发布的虚假视频  时间:2021-04-25  阅读:()
Java14将于3月17日正式发布,包含大量减少代码冗余的新特性Java14计划将会在今年的3月17日发布,Java14包含的JEP(JavaEnhancementProposals的缩写,Java增强建议)比Java12和13两个版本加起来还要多.
那么,对于每天编写和维护代码的Java开发人员来说,哪个特性值得我们关注呢如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop本文我将介绍以下几个重要功能:改进的switch表达式,最初作为预览在Java12和Java13中出现,现在完全成为Java14的一部分.
instanceof模式匹配(Patternmatchin),这是一个语言特性;非常有用的NullPointerExceptions,是JVM的一个特性.
如果你阅读了本文并在你的代码库中尝试了其中的一些特性,你可以通过向Java团队提供反馈来分享你的经验.
通过这样做,您就有机会为Java的开发做出贡献.
好了,咱们废话不多说,现在来详细看看Java14值得每一个Java关注的新特性.
Switch表达式(SwitchExpressions)在Java14中,switch表达式正式成为语言的一部分.
如果你不知道switch表达式是什么,可以看下这几篇文章NewswitchExpressionsinJava12、《InsideJava13'sswitchExpressionsandReimplementedSocketAPI》、以及《JDK13都已经来了!
五大新特性你最喜欢哪个》.
在以前Java12和Java13的版本中,switch表达式是一个"预览"特性.
这里注意,被指定为"预览"的特性主要用以收集反馈,并可能根据反馈进行更改甚至删除;不过其中的大多数最终将成为1/8Java一部分.
新的switch表达式的好处包括减少了bug的范围,而且得助于表达式和复合形式,使switch的编写变得简单.
比如switch表达式现在可以利用箭头语法:varlog=switch(event){casePLAY->"Userhastriggeredtheplaybutton";caseSTOP,PAUSE->"Userneedsabreak";default->{Stringmessage=event.
toString();LocalDateTimenow=LocalDateTime.
now();yield"Unknownevent"+message+"loggedon"+now;}};文本块(TextBlocks)Java13首次引入了文本块,并且作为预览特性.
文本块使处理多行字符串更容易.
在Java14中,这个特性仍然是预览特性,并做了一些调整.
在之前,为了提供足够的多行文本格式,使用许多字符串连接和转义序列来编写代码是很常见的.
比如下面的代码展示了一个HTML格式化的例子:Stringhtml=""+"\n\t"+""+"\n\t\t"+"\"Java14ishere!
\""+"\n\t"+""+"\n"+"";有了文本块之后,你可以简化这个过程,并使用分隔文本块开头和结尾的三个引号编写更优雅的代码:Stringhtml=""""Java14ishere!
"""";2/8与普通字符串文字相比,文本块还提供了更强的表达能力.
你可以阅读这篇文章:《TextBlocksCometoJava》.
在Java14中添加了两个新的转义字符.
首先,可以使用新的\s转义字符表示单个空格.
其次,可以使用反斜杠\来禁止在行的末尾插入新行字符.
当你想要在文本块中分割一个很长的行以提高可读性时,这是很有帮助的.
比如,当前处理多行字符串的方法如下:Stringliteral="Loremipsumdolorsitamet,consecteturadipiscing"+"elit,seddoeiusmodtemporincididuntutlabore"+"etdoloremagnaaliqua.
";有了\转义字符之后,我们可以在文本块中这么来写:Stringtext="""Loremipsumdolorsitamet,consecteturadipiscing\elit,seddoeiusmodtemporincididuntutlabore\etdoloremagnaaliqua.
\""";instanceof的模式匹配Java14引入了一个预览特性,该特性有助于消除在执行instanceof检查之后,还需要显式强制转换的需要.
例如,考虑以下代码:if(objinstanceofGroup){Groupgroup=(Group)obj;//usegroupspecificmethodsvarentries=group.
getEntries();}可以使用这个新功能,将上面代码重构如下:if(objinstanceofGroupgroup){3/8varentries=group.
getEntries();}因为条件检查已经判断出obj是Group类型的,那么为什么还需要在代码中显示转换obj为Group类型呢而且这可能会增加错误的范围.
新的语法将从典型的Java程序中删除许多类型转换.
(2011年的一份研究报告显示,大约24%的cast都是在进行instanceof判断之后进行的.
)JEP305涵盖了这一变化,并指出了来自JoshuaBloch的《EffectiveJavabook》中的一个示例,该示例如下:@Overridepublicbooleanequals(Objecto){return(oinstanceofCaseInsensitiveString)&&((CaseInsensitiveString)o).
s.
equalsIgnoreCase(s);}通过删除对CaseInsensitiveString的显式强制转换,可以将前面的代码简化为以下形式:@Overridepublicbooleanequals(Objecto){return(oinstanceofCaseInsensitiveStringcis)&&cis.
s.
equalsIgnoreCase(s);}这是一个值得体验的有趣特性,因为它为更通用的模式匹配打开了大门.
模式匹配的思想是为基于一定条件提取对象的组件提供一种语法方便的语言特征.
instanceof操作符就是这种情况,因为条件是类型检查,提取过程调用适当的方法或访问特定的字段.
换句话说,这个预览特性只是一个开始,我们可以期待一个能够帮助进一步减少冗余代码的语言特性,从而减少bug的可能性.
Records另一个值得关注的预览语言特性:records.
与目前提出的其他特性一样,该特性遵循了减少Java语言冗长的趋势,并帮助开发人员编写更简洁的代码.
Recods关注特定的域类(domainclasses),这些域类的目的只是在字段中存储数据,并且不声明任何自定义行为.
4/8为了说明这个特性,假设我们有一个域类BankTransaction,它用三个字段构建一个事务:日期、金额和描述.
由于我们需要考虑和其他组件进行交互,所以我们还需要以下一些方法:构造器Getter方法toString()方法hashCode()和equals()方法这些代码通常由IDE自动生成,占用大量空间.
下面是完整生成的BankTransaction类实现:publicclassBankTransaction{privatefinalLocalDatedate;privatefinaldoubleamount;privatefinalStringdescription;publicBankTransaction(finalLocalDatedate,finaldoubleamount,finalStringdescription){this.
date=date;this.
amount=amount;this.
description=description;}publicLocalDatedate(){returndate;}publicdoubleamount(){returnamount;}publicStringdescription(){returndescription;}@OverridepublicStringtoString(){return"BankTransaction{"+"date="+date+",amount="+amount+",description='"+description+'\''+'}';}@Override5/8publicbooleanequals(Objecto){if(this==o)returntrue;if(o==null||getClass()!
=o.
getClass())returnfalse;BankTransactionthat=(BankTransaction)o;returnDouble.
compare(that.
amount,amount)==0&&date.
equals(that.
date)&&description.
equals(that.
description);}@OverridepublicinthashCode(){returnObjects.
hash(date,amount,description);}}Java14提供了一种方法来删除这些代码,并明确表示您想要的只是一个类,它只将数据与equals、hashCode和toString方法的实现聚合在一起.
您可以重构BankTransaction如下:publicrecordBankTransaction(LocalDatedate,doubleamount,Stringdescription){}使用record来标记我们的类,我们的类将自动获取equals、hashCode和toString方法,除此之外,类的构造函数和getters方法也将自动得到.
如果你想要尝试这个功能,在编译这个类的时候你需要加上预览标记:javac--enable-preview--release14BankTransaction.
javarecord标记的类中Fields将隐式设置成final,也就意味着我们不能修改它.
但是需要注意的是,这并不意味着recod标记的类是不可修改的(immutable).
存储在字段中的对象本身可以是可变的.
有用的NullPointerExceptions有些人说,抛出NullPointerExceptions应该成为Java中新的"Helloworld",因为我们无法摆脱6/8它们.
撇开玩笑不谈,当代码在生产环境中运行时,NullPointerExceptions经常出现在应用程序日志中,这可能会使调试变得困难,因为原始代码并不容易获得.
例如,考虑下面的代码:varname=user.
getLocation().
getCity().
getName();在Java14之前,你可能得到以下的错误:Exceptioninthread"main"java.
lang.
NullPointerExceptionatNullPointerExample.
main(NullPointerExample.
java:5)不幸的是,在第5行代码中,有多个方法调用的赋值——getLocation()和getCity()——其中任何一个都可能返回null.
实际上,变量user也可以是null.
所以,目前还不清楚是什么导致了NullPointerException.
不过在Java14,新的JVM特性将给我们提供更多有用的信息:Exceptioninthread"main"java.
lang.
NullPointerException:Cannotinvoke"Location.
getCity()"becausethereturnvalueof"User.
getLocation()"isnullatNullPointerExample.
main(NullPointerExample.
java:5)上面的异常信息包含两个方面的信息:结果:Location.
getCity()无法被调用;原因:User.
getLocation()的返回值是null.
要使用这个功能,需要在JVM中加入以下标记-XX:+ShowCodeDetailsInExceptionMessages以下是一个示例:java-XX:+ShowCodeDetailsInExceptionMessagesNullPointerExample7/8根据JDK-8233014,在未来的Java版本,这个特性可能会默认启用.
这种增强不仅可用于方法调用,还可用于其他可能导致NullPointerException的地方,包括字段访问、数组访问和赋值等.
好了今天的分享就到这里了.
本文翻译自:Java14ArriveswithaHostofNewFeatures本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载.
本文链接:【】()PoweredbyTCPDF(www.
tcpdf.
org)8/8

CloudCone(20美元/年)大硬盘VPS云服务器,KVM虚拟架构,1核心1G内存1Gbps带宽

近日CloudCone商家对旗下的大硬盘VPS云服务器进行了少量库存补货,也是悄悄推送了一批便宜VPS云服务器产品,此前较受欢迎的特价20美元/年、1核心1G内存1Gbps带宽的VPS云服务器也有少量库存,有需要美国便宜大硬盘VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务...

星梦云60元夏日促销,四川100G高防4H4G10M,西南高防月付特价

星梦云怎么样?星梦云好不好,资质齐全,IDC/ISP均有,从星梦云这边租的服务器均可以备案,属于一手资源,高防机柜、大带宽、高防IP业务,一手整C IP段,四川电信,星梦云专注四川高防服务器,成都服务器,雅安服务器 。官方网站:点击访问星梦云官网活动方案:1、成都电信年中活动机(封锁UDP,不可解封):机房CPU内存硬盘带宽IP防护流量原价活动价开通方式成都电信优化线路4vCPU4G40G+50...

georgedatacenter:美国VPS可选洛杉矶/芝加哥/纽约/达拉斯机房,$20/年;洛杉矶独立服务器39美元/月

georgedatacenter怎么样?georgedatacenter这次其实是两个促销,一是促销一款特价洛杉矶E3-1220 V5独服,性价比其实最高;另外还促销三款特价vps,大家可以根据自己的需要入手。georgedatacenter是一家成立于2019年的美国vps商家,主营美国洛杉矶、芝加哥、达拉斯、新泽西、西雅图机房的VPS、邮件服务器和托管独立服务器业务。georgedatacen...

脸书删除特朗普发布的虚假视频为你推荐
客户flash360退出北京时间utc+8 13:30-14:00换成北京时间是什么时候outlookexpress如何开启OUTLOOK EXPRESS功能?字节跳动回应TikTok易主贾斯汀比伯的confident他在mv女主说了什么,大神回复,采纳internetexplorer无法打开Internet Explorer 打不开了结点cuteftp资费标准中国电信套餐资费一览表2021刚刚网刚刚网上刷单被骗了5万多怎么办啊 报警有用吗厦门三五互联科技股份有限公司厦门三五互联做销售怎么样?网站制作套餐制作一个公司网站究竟需要多少费用呢??
游戏服务器租用 日本私人vps 上海vps 拜登买域名批特朗普 金万维动态域名 vir 国外服务器网站 mediafire下载 服务器日志分析 512m内存 一元域名 有奖调查 网站木马检测工具 百度云1t cdn加速是什么 yundun atom处理器 中国联通宽带测速 万网注册 腾讯数据库 更多