你好啊,我是大阳。
Java 16 于 2021 年 3 月 16 日公布。在这篇文章中,咱们将介绍增加的一些个性以及一些代码示例。
Java16的次要更新内容如下:
- 时段反对
- 增加Stream.toList办法
- instanceof的模式匹配
- 密封类(第二次预览版)
- record纪录类(标准版)
1. 时段反对
DateTimeFormatter的新增性能,能够示意一天中的时段,例如“上午”、“下午”
package cn.dayangshuo.collectors;import java.time.LocalTime;import java.time.format.DateTimeFormatter;/** * @author DAYANG */public class DateTimeTest { public static void main(String[] args) { String date1 = DateTimeFormatter.ofPattern("a").format(LocalTime.now()); String date2 = DateTimeFormatter.ofPattern("B").format(LocalTime.now()); String date3 = DateTimeFormatter.ofPattern("k").format(LocalTime.now()); System.out.println(date1); System.out.println(date2); System.out.println(date3); }}//下午//下午//17
2. 增加Stream.toList办法
当初咱们能够应用Collectors.toList 和Collectors.toSet来缩小一些模板代码:
List<String> integersAsString = Arrays.asList("1", "2", "3");//之前这样写List<Integer> ints = integersAsString.stream().map(Integer::parseInt).collect(Collectors.toList());//当初能够这样写List<Integer> intsEquivalent = integersAsString.stream().map(Integer::parseInt).toList();
3. instanceof的模式匹配
之前:
Object obj = "大阳";if (obj instanceof String) { String t = (String) obj; // TODO}
当初:
Object obj = "大阳";if (obj instanceof String t) { // TODO}
4. 密封类(第二次预览版)
密封的类和接口限度了其余类或接口能够扩大或实现它们
public sealed interface Shape{ final class Planet implements Shape {} final class Star implements Shape {} final class Comet implements Shape {}}public abstract sealed class Test{ final class A extends Test {} final class B extends Test {} final class C extends Test {}}
5. record纪录类(标准版)
传统的Java应用程序通过创立一个类,通过该类的构造方法实例化类,并通过getter和setter办法拜访成员变量或者设置成员变量的值。有了record关键字,你的代码会变得更加简洁。
package cn.dayangshuo;/** * 一般的dto * @author DAYANG */public class NormalEntity { public static void main(String[] args) { //传统的形式 User1 user1 = new User1("大阳", 1990); System.out.println(user1); //reocrd 记录类 User2 user2 = new User2("大阳", 1990); System.out.println(user2); }}/** * 成员变量都是固定的 */class User1 { String name; Integer age; public User1(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User1[" + "name='" + name + '\'' + ", age=" + age + ']'; }}package cn.dayangshuo;/** * record 记录类 * 你也能够覆写equals() hashCode() toString()办法 * @author DAYANG */record User2(String name, Integer age) { @Override public String toString() { return "User2[" + "name='" + name + '\'' + ", age=" + age + ']'; } @Override public boolean equals(Object obj) { return false; } @Override public int hashCode() { return 0; }}