Java 使用lombok访问字段的字段
我正在使用,假设我有两个类Java 使用lombok访问字段的字段,java,lombok,Java,Lombok,我正在使用,假设我有两个类 @Data @AllArgsConstructor class Book { private String name; private BookDetail bookDetail; } @Data @AllArgsConstructor public class BookDetail { private String description; private String author; } 现在我可以找到这样一本书的作者了 Boo
@Data
@AllArgsConstructor
class Book {
private String name;
private BookDetail bookDetail;
}
@Data
@AllArgsConstructor
public class BookDetail {
private String description;
private String author;
}
现在我可以找到这样一本书的作者了
Book book = new Book("name1", new BookDetail("description1", "author1"));
System.out.println(book.getBookDetail().getAuthor());
这有点多余,有没有办法像这样直接找到作者
Book book = new Book("name1", new BookDetail("description1", "author1"));
System.out.println(book.getAuthor());
这有点多余,有没有办法像这样直接找到作者
Book book = new Book("name1", new BookDetail("description1", "author1"));
System.out.println(book.getAuthor());
不,在龙目山绝对没有这样的。最接近的是@Singular
Lombok@Builder
,它很漂亮,但对您没有帮助,因为它是1。建筑商和2。仅限收藏
我会考虑把你的结构变平。使用BookDetail
会让事情变得更复杂,只有在其他地方给我带来巨大优势时,我才会这么做
还请注意,具有可设置的可变字段为您提供了两种可能性,即如何更改说明
:通过getBookDetail().setDescription(..)
或通过setBookDetail(..)
您可能需要在getter和setter中克隆书籍详细信息
(Lombok不能为您这样做)
另一个选项是制作
BookDetail
(@Value
而不是@Data
),并使用@Wither
而不是@Setter
)。这使得更改说明
非常不方便
getBookDetail(getBookDetail().withDescription(....));
但有时可能是值得的(一般来说,不适用于实体,所以在您的情况下可能不值得)。如果Lombok支持,我会很高兴,但它不支持,而且可能永远也不会支持(正如您所希望的,它需要访问另一个类,这在它运行的编译阶段非常麻烦)。为什么不直接手工编写呢?我的意思是在
Book
中创建getAuthor
方法并从中调用BookDetail\getAuthor
。@SergeyProkofiev是的,我可以手动完成,我只是好奇lombok是否有更好的方法。我已经查看了他们的文档,没有这样的选项可以用纯lombok完成