使用lombok访问字段的字段

时间:2017-10-10 05:53:09

标签: java lombok

我使用lombok,假设我有两个班级。

@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());

1 个答案:

答案 0 :(得分:2)

  

这有点多余,有没有办法直接找到作者,像这样?

不,龙目岛肯定没有这样的。最接近的是@Singular龙目岛@Builder feature,它非常cool,但不会帮助您,因为它是1.建造者和2.仅限收藏。

我考虑将你的结构弄平。使用BookDetail会让事情变得更加复杂,只有当它在其他地方为我提供了很大的优势时,我才会这样做。

另请注意,拥有可设置的可变字段可为您提供两种可能性,即如何更改descriptiongetBookDetail().setDescription(....)setBookDetail(....)

您可能希望克隆getter和setter中的BookDetail(Lombok无法为您执行此操作)。

另一种选择是制作BookDetail@Value而不是@Data)并使用@Wither代替@Setter。这使得更改description非常不方便

getBookDetail(getBookDetail().withDescription(....));

但有时可能是值得的(一般情况下,不是实体,所以可能不适合你)。如果龙目岛支持这一点,我会喜欢它,但它不会,也可能永远不会(就像你想要的那样,它需要访问另一个类,这在它运行的编译阶段是非常有问题的。) / p>