2013-08-09 29 views
18


Một trong các POJO của tôi có trường đối tượng Boolean để cho phép NULLS trong cơ sở dữ liệu (yêu cầu). Có thể sử dụng chú thích @Data Lombok ở cấp lớp chưa ghi đè lên getter cho trường Boolean không? Mặc định nó tạo ra là phương thức getXXX cho trường Boolean. Tôi muốn ghi đè nó như làXXX()?Lombok làm thế nào để tùy chỉnh getter cho trường đối tượng Boolean?

Cảm ơn,
Paddy

+0

Theo định nghĩa, ghi đè có nghĩa là, viết getXXX của riêng bạn để được cung cấp bởi lombok. Nếu bạn muốn thêm của riêng bạn làXXX, đó là một phương pháp khác. Tại sao bạn không tạo mộtXXX trong POJO và trong quá trình triển khai, hãy gọi getXXX nếu được yêu cầu hoặc thực hiện theo cách bạn muốn? – Jayz

+0

Tôi đã khai báo @Data ở cấp lớp và có quá nhiều thuộc tính trong lớp, do đó, loại trừ getter hoặc đặt getter mặc định là riêng tư cho một trường sẽ khó khăn. Nếu không, ngay cả khi tôi thêm phương thức isXXX, phương thức getXXX sẽ vẫn hiển thị với người dùng của lớp - tôi muốn sử dụng chính phương thức getXXX. Tôi hy vọng bạn hiểu bối cảnh của tôi. – Paddy

Trả lời

31

Đó là một chút dài dòng, nhưng bạn có thể cung cấp riêng isXXX của bạn, và sau đó sử dụng AccessLevel.NONE nói Lombok không để tạo ra getXXX:

@Data 
public class OneOfPaddysPojos { 

    // ... other fields ... 

    @Getter(AccessLevel.NONE) private Boolean XXX; 

    public Boolean isXXX() { 
     return XXX; 
    } 
} 

(Và hey, ít nhất nó không phải khá như tiết như thể bạn đang không sử dụng Lombok để bắt đầu với!)

0

tên của lĩnh vực boolean là gì? theo lombok doc:

Một getter mặc định chỉ đơn giản trả về lĩnh vực này, và được đặt tên getFoo nếu trường được gọi là foo (hoặc isFoo nếu loại trường là boolean)

Lombok sẽ tạo ra getter với tên isXXX cho lĩnh vực boolean bạn

+11

Bạn có vẻ bối rối. OP rõ ràng nhận thức được rằng một trình thu thập của trường 'boolean' sẽ được đặt tên là' isXXX() 'theo mặc định; vấn đề là (s) ông muốn rằng quy ước đặt tên được sử dụng cho một lĩnh vực 'Boolean' (' Boolean' là loại wrapper đối tượng cho 'boolean', giống như những gì' Integer' là 'int'). (Trang mà bạn liên kết thực sự nói rõ điều này: "Bất kỳ biến thể nào trên' boolean' sẽ * không * dẫn đến sử dụng tiền tố 'là' thay vì tiền tố' get', ví dụ, trả về 'java.lang.Boolean' kết quả trong một tiền tố 'get', không phải là tiền tố' is'. ") – ruakh

11

Tôi nghĩ rằng nếu bạn chuyển sang lĩnh vực của bạn Boolean X-boolean X hơn Lombok tạo phương thức getter isX().

+7

Đúng, nhưng bạn cần có trường như là một' Boolean' nếu cột là nullable ở cấp cơ sở dữ liệu. Vấn đề là với một trường nguyên thủy (* tức là * 'boolean'), bạn không thể thực sự biết được một giá trị nào đó được cho là một' NULL' hay một số không ('0'). Do đó câu hỏi của OP. –

Các vấn đề liên quan