你好啊,我是大阳。
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;}
}