2012-11-25 22 views
6

Nếu bạn có một lớp miền trong một dự án grails, bạn cũng có thể sử dụng getter và setter để viết hoặc đọc chúng.Sử dụng getter và setters trong grails hay không?

Ví dụ lớp miền Sách có thuộc tính:

String author 

Trong điều khiển bạn đã một cuốn sách và bạn muốn thiết lập các tác giả cho cuốn sách này: này làm việc với truy cập trực tiếp vào thuộc tính hoặc phương thức getter và phương thức setter mặc dù chúng không nằm trong lớp.

book.author = "Mike Miller" 
book.setAuthor("Mike Miller") 

Cách ưa thích của việc nhận và đặt thuộc tính trong groovy & grails là gì?

Trả lời

15

Chúng giống nhau. Khi bạn có một trường chưa được sắp xếp như String author, trình biên dịch Groovy làm cho trường riêng tư và tạo một trình lấy và đặt cho nó. Nó sẽ không ghi đè lên các phương thức hiện có mặc dù, vì vậy bạn có thể xác định tập hợp của riêng bạn và/hoặc nhận được nếu nó không chỉ là thiết lập và nhận giá trị.

book.author = "Mike Miller" là đường cú pháp Groovy để gọi setter, giống như String authorName = book.author là cú pháp đường để gọi getter. Để xem điều này, hãy chỉnh sửa lớp học và thêm vào một setter hoặc getter và thêm một println, ví dụ:

void setAuthor(String a) { 
    println "Setting author to '$a', was '$author'" 
    author = a 
} 

Bạn có thể sử dụng một decompiler để xem mã được tạo ra - Tôi khuyên bạn nên JD-GUI, http://java.decompiler.free.fr/?q=jdgui

3

Không có sự khác biệt thực sự giữa hai kể từ khi họ vừa biên dịch xuống để cùng mã. Một trong những lợi ích của việc sử dụng grails không phải lo lắng về các getter và setter mã boilerplate, vì vậy tôi mạnh mẽ sẽ đề nghị mã dưới đây vì nó cải thiện khả năng đọc và năng suất:

book.author = "Mike Miller"

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