Có bất kỳ sự khác biệt giữa hai dòng trong sauGán ArrayList vào danh sách
ArrayList<String> arrName = new ArrayList<String>();
List<String> arrName = new ArrayList<String>();
Cám ơn Trả lời
Có bất kỳ sự khác biệt giữa hai dòng trong sauGán ArrayList vào danh sách
ArrayList<String> arrName = new ArrayList<String>();
List<String> arrName = new ArrayList<String>();
Cám ơn Trả lời
Hầu như luôn ưu tiên thứ hai so với phiên bản thứ nhất. Thứ hai có lợi thế là việc thực hiện List
có thể thay đổi (thành ví dụ LinkedList
) mà không ảnh hưởng đến phần còn lại của mã. Đây sẽ là khó khăn để làm với một ArrayList
, không chỉ vì bạn sẽ cần phải thay đổi ArrayList
đến LinkedList
ở khắp mọi nơi, nhưng cũng bởi vì bạn có thể đã sử dụng ArrayList
phương pháp cụ thể.
Sau này thường được khuyến cáo như là miễn là bạn chỉ cần một giao diện List
sau này. Đó được gọi là "lập trình để giao diện, không thực hiện".
Đối với phần chênh lệch chi tiết giữa họ, tôi đã trả lời trong một câu hỏi khác trên stackoverflow: The difference between "C c = new C()" and "A c = new C()" when C is a subclass of A in Java
Cách tiếp cận thứ hai thường là một trong những ưu tiên vì nó ẩn đằng sau thực hiện một giao diện. Điều này có nghĩa là sau này, nếu các yêu cầu sẽ thay đổi và sẽ yêu cầu thực hiện một giao diện List
, bạn có thể thay đổi chỉ một dòng mã và mọi thứ khác sẽ vẫn hoạt động vì bạn đã mã hóa giao diện không tới một lớp .
Không có nhiều sự khác biệt cho mỗi gia nhập, nhưng List
được sử dụng bất cứ khi nào có thể vì nó là một giao diện và bạn có thể thấy trong các thông số phương pháp thư viện tiêu chuẩn nói chung là List<K>
, do đó bất kỳ thực hiện cụ thể được thông qua, như ArrayList
hoặc LinkedList
.
Cố gắng ẩn triển khai cụ thể phía sau Giao diện bất cứ khi nào có thể. see this
Thứ hai là ví dụ về Program to Interface
và cách ưa thích của nó.
Để biết chi tiết What does it mean to "program to an interface"?
Tôi đã nhìn thấy cùng một câu hỏi (thậm chí cùng một văn bản) giữa ngày hôm qua và hôm nay (nhưng không thể tìm thấy). –
Oh i C Cảm ơn anyway –
@LuiggiMendoza. Ngay cả tôi. –