này đã làm với các gwt-biên dịch, như bạn nói một cách chính xác. EDIT: Tuy nhiên, như Daniel lưu ý trong một bình luận dưới đây, điều này không áp dụng cho trình biên dịch gwt nói chung nhưng chỉ khi sử dụng GWT-RPC.
Nếu bạn khai báo Danh sách thay vì ArrayList làm kiểu trả về, trình biên dịch gwt sẽ bao gồm toàn bộ Danh sách phân cấp (nghĩa là tất cả các loại thực hiện Danh sách) trong mã được biên dịch của bạn. Nếu bạn sử dụng ArrayList, trình biên dịch sẽ chỉ cần bao gồm hệ thống phân cấp ArrayList (tức là tất cả các kiểu thực hiện ArrayList - thường chỉ là bản thân ArrayList). Sử dụng một giao diện thay vì một lớp cụ thể, bạn sẽ phải trả một hình phạt về thời gian biên dịch và kích thước của mã được tạo ra của bạn (và do đó số lượng mã mà mỗi người dùng phải tải xuống khi chạy ứng dụng của bạn).
Bạn cũng hỏi lý do: Nếu bạn sử dụng giao diện (thay vì một lớp cụ thể), trình biên dịch không biết thời gian biên dịch mà việc triển khai các giao diện này sẽ được sử dụng. Vì vậy, nó bao gồm tất cả các triển khai có thể.
Về câu hỏi cuối cùng của bạn: tất cả các phương thức CÓ THỂ được khai báo để trả về giao diện (đó là những gì bạn đề cập, đúng không?). Tuy nhiên, hình phạt trên được áp dụng.
Và nhân tiện: Theo tôi hiểu, vấn đề này không bị hạn chế đối với phương pháp. Nó áp dụng cho tất cả các khai báo kiểu: biến, tham số. Bất cứ khi nào bạn sử dụng một giao diện để khai báo một cái gì đó, trình biên dịch sẽ bao gồm hệ thống phân cấp hoàn chỉnh của các giao diện con và các lớp thực hiện. (Vì vậy, rõ ràng nếu bạn khai báo giao diện của riêng bạn chỉ với một hoặc hai lớp thực hiện thì bạn không phải chịu một hình phạt lớn. Đó là cách tôi sử dụng giao diện trong GWT.)
Tóm lại: sử dụng các lớp cụ thể bất cứ khi nào có thể. (. Đề nghị nhỏ: nó sẽ giúp đỡ nếu bạn đã cho dấu thời gian khi bạn tham khảo video)
Nó có liên quan đến việc tuần tự hóa RPC. Xem http://stackoverflow.com/questions/3059787/gwt-using-listserializable-in-a-rpc-call –
Nhìn vào hoặc ngay sau điểm 7 phút trong bản trình bày. Người nói không biết chính xác lý do tại sao anh ấy làm điều đó.Anh gọi nó là "mê tín dị đoan". –