2010-08-13 34 views
5

Tôi chỉ đọc qua bộ sưu tập java hướng dẫn và tự hỏi tại sao <E> là cần thiết sau khi tĩnh?Tĩnh là gì <E>?

 

public static<E> Set<E> removeDups(Collection<E> c) { 
    return new LinkedHashSet(c); 
} 


Cảm ơn, Sarah

+0

Phương pháp của bạn sẽ linh hoạt hơn khi bạn khai báo bộ sưu tập là 'Bộ sưu tập '. Bằng cách đó bạn có thể vượt qua trong các bộ sưu tập của các lớp con của E. – whiskeysierra

Trả lời

8

Để dễ đọc, thường có khoảng trắng giữa tên thông số tĩnh và tên chung. static tuyên bố phương thức là tĩnh, tức là không có trường hợp cần thiết để gọi nó. Các <E> tuyên bố rằng có một tham số chung không bị chặn được gọi là E được sử dụng để tham số hóa các đối số của phương thức và/hoặc giá trị trả về. Ở đây, nó được sử dụng trong cả kiểu trả về, Set<E> để khai báo phương thức trả về Tập hợp E, và trong tham số, Collection<E> cho biết phương thức lấy một tập hợp của E.

Loại E không được chỉ định, chỉ giá trị trả về và tham số phương thức phải được tham số chung với cùng loại. Trình biên dịch xác định loại thực tế khi phương thức được gọi. Ví dụ,

Collection<String> myStrings = new ArrayList<String>(); 
    .. add strings 
    Set<String> uniqueStrings = SomeClass.removeDups(myStrings); 

Nếu bạn cố gắng sử dụng các loại tham số khác nhau cho hai bộ sưu tập, như

Set<Integer> uniqueStrings = SomeClass.removeDups(myStrings); 

này sẽ tạo ra một lỗi biên dịch, vì các thông số chung chung không khớp.

2

Các <E> là cách để bày tỏ ý rằng đây là một Generic Phương pháp một tính năng được giới thiệu với Generics trong Java 5.0

Xem here để biết thêm chi tiết về cách sử dụng của nó và lý do.