我喜欢Lombok项目,但最近我正在阅读并尝试 Java 14 的一些新功能。
在新功能中,有一个record关键字,它允许创建一个已经内置以下功能的类:构造函数、私有 final 字段、访问器、equals/hashCode、getter、toString 方法。
现在我的问题是:是更好地依赖 Lombok 的功能还是应该开始使用记录功能:
最好使用这个:
record Person (String name, String surname) {}
Run Code Online (Sandbox Code Playgroud)
或者那个:
@AllArgsConstructor
@ToString
@EqualsAndHashCode
public class Person {
@Getter private int name;
@Getter private int surname;
}
Run Code Online (Sandbox Code Playgroud)
这两种方法的优缺点是什么?
让我们想象一下这种情景:3级Meeting,Room, Projector
会议可能设置了一个房间,里面可能有一个投影仪。
现在假设我想知道投影仪的型号是什么。最自然的事情是做类似的事情
Meeting meeting = someMethod();
return meeting.getRoom().getProjector().getModelName();
Run Code Online (Sandbox Code Playgroud)
此代码可以正确返回投影仪的型号名称,不幸的是,此代码也可能导致异常:java.lang.NullPointerException如果包含在根类 Meeting(甚至 Meeting 类)中的类之一为空。
为了防止这个问题,并在最坏的情况下获得一个默认值,我们应该检查每个调用的返回值。
Meeting meeting = someMethod();
if (meeting != null) {
Room room = meeting.getRoom();
if (room != null) {
Projector projector = room.getProjector();
if (projector != null) {
return projector.getModelName;
}
}
}
return "No Projector Exist";
Run Code Online (Sandbox Code Playgroud)
现在的代码非常糟糕。
处理这种避免 NullPointerException 的链式方法调用的最佳方法是什么?
我是 JHipster 的新手,我正在做一些实验。
我创建了我的第一个 JHipster 应用程序并导入了可以从这里下载的“默认”JDL:JDL Studio(没有任何修改)。
导入后,我看到我的实体填充了一些演示数据,并且使用相同的信息csv创建了一些文件config/liquidbase/data。
我检查了jhipster-jdl.jh文件,那里没有数据规范。
我不明白该数据是在哪里创建的,以及允许创建该虚拟数据的逻辑是什么。