当前位置: 首页 > 后端技术 > Java

Java16新特性及代码示例

时间:2023-04-01 20:43:00 Java

大家好,我是大洋。Java16将于2021年3月16日发布。在本文中,我们将介绍一些新增功能以及一些代码示例。Java16主要更新如下:时间段支持增加Stream.toList方法instanceof模式匹配密封类(第二预览版)record记录类(标准版)1.时间段支持DateTimeFormatter的新功能,可以表示一天中的时间,比如“早上”、“下午”包cn.dayangshuo.collectors;importjava.time.LocalTime;importjava.time.format.DateTimeFormatter;/***@authorDAYANG*/publicclassDateTimeTest{publicstaticvoidmain(String[]args){Stringdate1=DateTimeFormatter.ofPattern("a").format(LocalTime.now());Stringdate2=DateTimeFormatter.ofPattern("B").format(LocalTime.now());Stringdate3=DateTimeFormatter.ofPattern("k").format(LocalTime.now());System.out.println(date1);System.out.println(date2);System.out.println(date3);}}//下午//下午//172。添加Stream.toList方法现在我们可以使用Collectors.toList和Collectors.toSet来减少一些模板代码:ListintegersAsString=Arrays.asList("1","2","3");//WriteList<整数>ints=integersAsString.stream().map(Integer::parseInt).collect(Collectors.toList());//现在可以写ListintsEquivalent=integersAsString.stream().map(Integer::parseInt).toList();3.instanceof模式匹配前:Objectobj="Dayang";if(objinstanceofString){Stringt=(String)obj;//TODO}Now:Objectobj="Dayang";if(objinstanceofStringt){//TODO}4.Sealedclasses(secondpreview)Sealedclassesandinterfacesrestrictwhatotherclassesorinterfacescanextendorimplementthem公开密封interfaceShape{finalclassPlanet实现Shape{}finalclassStar实现Shape{}finalclassComet实现Shape{}}publicabstractsealedclassTest{finalclassAextendsTest{}finalclassBextendsTest{}finalclassCextendsTest{}}5.记录类(标准版)传统Java应用程序创建一个类是通过类的构造函数实例化类,并通过getter和setter方法访问成员变量或设置成员变量的值。有了record关键字,你的代码会变得更加简洁。packagecn.dayangshuo;/***普通dto*@authorDAYANG*/publicclassNormalEntity{publicstaticvoidmain(String[]args){//传统方式User1user1=newUser1("Dayang",1990);System.out.println(user1);//reocrdrecordclassUser2user2=newUser2("大洋",1990);System.out.println(user2);}}/***成员变量是固定的*/classUser1{Stringname;整数年龄;publicUser1(Stringname,Integerage){this.name=name;这个。年龄=年龄;}publicStringgetName(){返回名称;}publicvoidsetName(Stringname){this.name=name;}publicIntegergetAge(){返回年龄;}publicvoidsetAge(Integerage){this.age=age;}@OverridepublicStringtoString(){return"User1["+"name='"+name+'\''+",age="+age+']';}}packagecn.大阳朔;/***record记录类*也可以覆盖equals()hashCode()toString()方法*@authorDAYANG*/recordUser2(Stringname,Integerage){@OverridepublicStringtoString(){return"User2["+"name='"+name+'\''+",age="+age+']';}@Overridepublicbooleanequals(Objectobj){returnfalse;}@OverridepublicinthashCode(){返回0;}}