Câu trả lời:
đường , trong chương trình, thường đề cập đến những ngọt ngào bổ sung , hầu hết là các phím tắt, giúp một số cấu trúc dễ nhập và dễ đọc hơn (thực tế là cấu trúc quan trọng nhất trong vòng đời của chương trình của bạn).
Wikipedia có định nghĩa về đường theo cú pháp nhưng bạn cần lưu ý rằng không phải tất cả đường về bản chất đều là theo cú pháp (không phải tất cả các bổ sung ngọt gần đây chỉ là thay đổi của trình biên dịch).
Đây là vài ví dụ :
i++
và ++i
). Mục đích duy nhất của họ là tránh viết một tuyên bố bổ sung. Chúng là đường nguyên chất.+=
, |=
, &=
, Vv được làm từ cùng một loại đường.Java được nhiều người coi là không đủ ngắn gọn, đặc biệt là so với các ngôn ngữ hiện đại. Đó là lý do tại sao những bổ sung giúp đọc mã nhanh hơn được hoan nghênh.
Để kết thúc, tôi chỉ lưu ý rằng mặc dù thiếu đường có thể làm cho chương trình của bạn trở nên béo hơn, nhưng thừa đường dẫn đến nhiều cách khác nhau để viết những thứ giống nhau, có thể khiến ngôn ngữ của bạn trở nên buồn tẻ và chương trình của bạn kém mạch lạc và khó duy trì hơn . Một loại đường khác, đường API, thường là một bệnh dịch khiến API khó nắm bắt hơn, đặc biệt là khi nó được tạo ra từ các chất bổ sung (ví dụ: quá tải).
Điều này đang được nói, desugaring đề cập đến
"Desugaring" dường như có một ý nghĩa rất cụ thể trong Java 8. Nó dường như là một thuật ngữ tổng hợp để diễn đạt các cách khác nhau mà một biểu thức lambda có thể được liên kết với một lệnh gọi phương thức cụ thể thực tế.
Tài liệu này về "Bản dịch các biểu thức Lambda" dường như có các chi tiết thực sự về những gì đang xảy ra nếu bạn quan tâm đến các chi tiết cụ thể.
Một cụm từ chính trong tài liệu:
Bước đầu tiên của việc dịch lambdas thành bytecode là gỡ bỏ phần thân lambda thành một phương thức.
Nói chung "desugaring" trong javac cho phép biểu diễn một số tính năng ngôn ngữ với các tính năng đã có từ trước. Điều này cho phép biểu diễn chúng trong mã bytecode mà không cần thực hiện các thay đổi lớn đối với định dạng tệp lớp. Cũng vì lý do này mà back-end của trình biên dịch ổn định hơn front-end. Điều này không có nghĩa là mọi tính năng ngôn ngữ mới chỉ là đường cú pháp, như chắc chắn không phải là trường hợp của lambdas và tham chiếu phương thức. Có nhiều ví dụ hơn về "gỡ bỏ" trong trình biên dịch:
Bạn cũng có thể điều tra xem điều gì xảy ra với công tắc Chuỗi, xóa loại, ...