2012-04-12 29 views

Trả lời

13

Danh sách Java interface (java.util.List) có thể được mở rộng. Nói cách khác, các thể hiện của Danh sách có thể được cung cấp một loại, vì vậy chỉ các thể hiện của loại đó có thể được chèn vào và đọc từ Danh sách đó. Dưới đây là ví dụ:

List<String> list = new ArrayList<String>(); 

Danh sách này giờ đây chỉ được nhắm mục tiêu vào danh sách Chuỗi, nghĩa là chỉ có thể đưa các thể hiện chuỗi vào danh sách này. Nếu bạn cố gắng đưa cái gì đó khác vào Danh sách này, trình biên dịch sẽ phàn nàn.

Kiểm tra loại chung chỉ tồn tại ở thời gian biên dịch. Khi chạy, bạn có thể tinh chỉnh mã của mình để một Danh sách chuỗi có các đối tượng khác mà String đã chèn vào. Đây là một ý tưởng tồi, mặc dù.

Truy cập vào một danh sách Generic

Bạn có thể nhận và chèn các yếu tố của một danh sách chung chung như thế này:

List<String> list = new ArrayList<String>(); 

String string1 = "a string"; 
list.add(string1); 

String string2 = list.get(0); 

Thông báo như thế nào nó không phải là cần thiết để đúc các đối tượng được lấy từ danh sách. get() gọi phương thức, như thường lệ cần thiết. Trình biên dịch biết rằng Danh sách này chỉ có thể chứa các cá thể String, vì vậy các phôi không cần thiết.

Iterating một danh sách Generic

Bạn có thể lặp lại một danh sách chung sử dụng một iterator, như thế này:

List<String> list = new ArrayList<String>(); 

Iterator<String> iterator = list.iterator(); 

while(iterator.hasNext()){ 
    String aString = iterator.next(); 
} 

Thông báo như thế nào nó không phải là cần thiết để đúc các đối tượng trở về từ các iterator.next() cuộc gọi tiếp theo. Bởi vì Danh sách được mở rộng (có một kiểu), trình biên dịch biết rằng nó chứa các cá thể String. Do đó không cần thiết phải đúc các vật thể thu được từ nó, ngay cả khi nó đến từ Iterator của nó.

Bạn cũng có thể sử dụng mới cho vòng lặp, như thế này:

List<String> list = new ArrayList<String>(); 

for(String aString : list) { 
    System.out.println(aString); 
} 

Chú ý làm thế nào một biến String được khai báo bên trong parantheses của vòng lặp for. Đối với mỗi lần lặp (mỗi phần tử trong Danh sách), biến này chứa phần tử hiện tại (Chuỗi hiện tại).

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