你好啊,我是大阳。
Java 16 于 2021 年 3 月 16 日发布。在这篇文章中,我们将介绍添加的一些特性以及一些代码示例。
Java16的主要更新内容如下:
- 时段支持
- 添加Stream.toList方法
- instanceof的模式匹配
- 密封类(第二次预览版)
- record纪录类(标准版)
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 integersAsString = Arrays.asList("1", "2", "3");
//之前这样写
List ints = integersAsString.stream().map(Integer::parseInt).collect(Collectors.toList());
//现在可以这样写
List 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 Starimplements Shape {}
final class Cometimplements Shape {}
}public abstract sealed class Test{
final class A extends Test {}
final class B extends Test {}
final class C extends Test {}
}
5. record纪录类(标准版) 【Java16新特性及代码示例】传统的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;
}
}
推荐阅读
- spring|2020年Spring全家桶面试题大全含答案共79题
- 程序员|阿里P7大牛手把手教你!mysql数据库应用案例教程
- 程序员|Java的Io模型你了解多少(dockerbuild指定版本)
- 大数据|控制论,计算机设计和思想会议
- JAVA|Java 工厂模式
- java|一位群友作为后端开发在滴滴和头条分别干了 2 年的经验总结
- 设计模式|Java设计模式之简单工厂模式
- android|走穿java23种设计模式-2工厂方法模式详解
- java设计模式|java设计模式---抽象工厂模式