import java.util.Optional;
public class MyClass {
public static void main(String args[]) {
InnerClass foo = null; //new InnerClass(“Test”);
Optional fooWrapper = Optional.ofNullable(foo);
fooWrapper.ifPresent(x -> System.out.println("foo = " + x.getName()));
//System.out.println("foo = " + fooWrapper.orElseThrow());
}
}
class InnerClass {
String name = “”;
public InnerClass(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
复制代码
提示:当使用Optional时,如果你使用orElse()方法通过方法调用提供一个默认值,考虑使用orElseGet()来代替提供一个函数引用,以获得性能上的好处,如果值是非空的,就不会运行调用。
The Record Class
================
构建Java应用的一个常见需求是所谓的不可变的DTO(数据传输对象)。DTOs用于对来自数据库、文件系统和其他数据存储的数据进行建模。传统上,DTOs是通过制作一个类来创建的,其成员通过构造函数来设置,没有访问它们的getters。Java 14引入了新的记录关键字,Java 15在此基础上进行了改进,为这一目的提供了一种速记方式。
下面的例子说明了一个典型的DTO定义和record类型引入前的用法。
public class MyClass {
public static void main(String args[]) {
Pet myPet = new Pet(“Sheba”, 10);
System.out.println(String.format(“My pet %s is aged %s”, myPet.getName(), myPet.getAge()));
}
}
class Pet {
String name;
Integer age;
public Pet(String name, Integer age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public Integer getAge(){
return this.age;
}
}
复制代码
如下面的例子所示,我们可以使用record关键字来消除大部分的模板。
public class MyClass {
public static void main(String args[]) {
Pet myPet = new Pet(“Sheba”, 10);
System.out.println(String.format(“My pet %s is aged %s”, myPet.getName(), myPet.getAge()));
}
}
public record Pet(String name, Integer age) {}
复制代码
请注意,使用数据对象的客户端代码并没有改变;它的行为就像传统定义的对象一样。record关键字足够聪明,可以通过简单的定义足迹推断出存在哪些字段。
record类型还定义了equals()、hashCode()和toString()的默认实现,同时也允许开发者重写这些。 你也可以提供一个自定义的构造函数。
请注意,record不能被子类化。
感谢观看,这是6个Java不容错过的新特性第1篇文章,如果您有兴趣,可以关注一下我,方便查看后续文章,一起学习,共同进步,不胜感激!
最后如何让自己一步步成为技术专家
说句实话,如果一个打工人不想提升自己,那便没有工作的意义,毕竟大家也没有到养老的年龄。
当你的技术在一步步贴近阿里p7水平的时候,毫无疑问你的薪资肯定会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。
推荐一份Java架构之路必备的学习笔记,内容相当全面!!!
成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。
你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!
进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!
【关注】+【转发】+【点赞】支持我!创作不易!
的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!
进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!
【关注】+【转发】+【点赞】支持我!创作不易!