2012-07-07 56 views
16

Tôi tự hỏi tại sao chung phương pháp mà trở gì void đang (hoặc có thể) tuyên bố như sau:Return Thuộc tính của Java Generic Phương pháp

public static <E> void printArray(E[] inputArray) { 
    // Display array elements    
    for (E element : inputArray){   
     System.out.printf("%s ", element); 
    } 
    System.out.println(); 
    } 

Nó có vẻ như <E> là kiểu của đối tượng trả lại, nhưng phương pháp này trả về không có gì trong thực tế. Vì vậy, ý nghĩa thực sự của <E> trong trường hợp này là cụ thể và trong các phương pháp chung chung là gì?

Trả lời

66

Câu hỏi này phù hợp với một trong những ghi chú cũ của tôi. Tôi hy vọng điều này giúp minh họa:

enter image description here enter image description here

+7

Bạn đã làm một việc thật tốt ở đây, 1 – CloudyMarble

+0

hạnh phúc khi biết rằng! Cảm ơn bạn. @twomore – Jops

+1

câu trả lời tuyệt vời + 1, có thể đáng nói đến trong phương pháp đầu tiên của bạn, bạn có thể sử dụng Void (chữ hoa 'V') cho kiểu trả về T ... mặc dù 'y' sẽ phải có giá trị null – Rhubarb

3

Nó không phải là loại đối tượng được trả về. Nó chỉ ra rằng E, trong chữ ký phương thức, là một kiểu chung và không phải là một loại cụ thể. Không có nó, trình biên dịch sẽ tìm kiếm một lớp có tên là E cho đối số của phương thức.

7

<E> là khai báo tham số kiểu chung. Nó có nghĩa là "phương pháp này có một tham số kiểu duy nhất, được gọi là E, có thể là bất kỳ loại nào".

Đây không phải là loại trả lại - đến sau khai báo tham số kiểu, ngay trước tên phương thức. Vì vậy, kiểu trả về của phương thức printArray trong câu hỏi của bạn vẫn là void.

Xem section 8.4 of the JLS để biết thêm chi tiết về khai báo phương pháp.

2

< E> được gọi là thông số loại chính thức. Nó không phải là kiểu trả về của phương thức. Về cơ bản nó nói rằng phương thức có thể chấp nhận như các mảng tham số của các kiểu khác nhau (E [] inputArray).

1

E được sử dụng làm trình giữ chỗ cho loại thực tế sẽ được chuyển đến chức năng Gen khi chức năng này sẽ gọi.

giả E có thể được thay thế bằng nguyên

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