Tôi vừa đọc một số Java 7 preview presentation (pdf) và có một trang trình bày trên Yêu cầu được ghép nối. Dưới đây là ví dụ được sử dụng trong trang trình bày:Yêu cầu xích trong Java 7?
// Construction with setters
DrinkBuilder margarita = new DrinkBuilder();
margarita.add("tequila");
margarita.add("orange liqueur");
margarita.add("lime juice");
margarita.withRocks();
margarita.withSalt();
Drink drink = margarita.drink();
// Construction with chained invocation
Drink margarita = new DrinkBuilder()
.add("tequila")
.add("orange liqueur")
.add("lime juice")
.withRocks()
.withSalt()
.drink();
Và tôi có cảm giác lẫn lộn về điều này. Người ta không nên chuỗi quá nhiều lời gọi phương thức vào một câu lệnh. Mặt khác, viết margarita.this()
và margarita.that()
cũng không thuận tiện.
Bây giờ, tôi đang đến Java từ thế giới Delphi. Và ở Delphi có cấu trúc ngôn ngữ with
. Điều này được ấp ủ bởi một vài người và bị ghê tởm bởi nhiều người (hoặc là nó theo cách khác xung quanh?). Tôi thấy with
là thanh lịch hơn ý tưởng về yêu cầu xích (mà tôi tin rằng hoạt động trên cơ sở phương pháp void
trả về tham chiếu đến đối tượng mà nó đã được gọi - và đây là phần tôi không thích, vì void
phải trả về không có gì).
tôi sẽ đánh giá cao tính năng with
ngôn ngữ được chấp nhận bởi Java, vì vậy mã ví dụ có thể được viết như sau:
Drink margarita = null;
with (new DrinkBuilder()) {
add("tequila");
add("orange liqueur");
add("lime juice");
withRocks();
withSalt();
margarita = drink();
}
Tôi là người duy nhất muốn giải pháp này đến gọi xích? Bất cứ ai khác cảm thấy rằng with
có thể là một phần mở rộng hữu ích cho ngôn ngữ Java? (Nhắc tôi về câu hỏi của ai đó về sự cần thiết của "Java ++" ...)
Điều này không giới hạn đối với Java 7, bạn có thể viết trình tạo bằng cách đơn giản trả lại "this" trong phương thức. Một ví dụ tốt là java.lang.StringBuilder. –
Tôi nghĩ rằng điểm là Java 7 cho phép chuỗi không trả lại điều này, do đó thay đổi ngữ nghĩa của một cuộc gọi phương thức. – OregonGhost