2013-03-07 40 views
9
public <E extends Foo> List<E> getResult(String s); 

nơi Foo là lớp của riêng tôi.Tại sao phương thức Java này lại có hai kiểu trả về?

Loại trả lại của phương thức này là gì? Tại sao nó có vẻ có hai loại trả về?

+1

Nó sẽ trả về một 'Danh sách '. –

+2

@LuiggiMendoza '?' Được chỉ định bởi người gọi. Bản thân phương thức không có sự lựa chọn. Tất cả nó có thể trả về hợp pháp là một 'List' rỗng, một' List' của 'null', 'null' hoặc ném một ngoại lệ/không trả về. –

Trả lời

19

Không, bạn không có hai loại trả lại. Đây là số generic method bạn đang xem.

<E extends Foo> --> you are declaring a generic type for your method 

List<E> --> this is your return type 

Phương pháp của bạn có thể có loại chung. loại trả lại của bạn là List<Foo or any SubType Of FOO>

6

Loại trả về là List<E>. Điều khoản <E extends Foo> không phải là loại trả lại; nó là khai báo kiểu chung, xác định rằng loại cụ thể E phải là Foo (hoặc một lớp con của Foo). Đây là cú pháp chuẩn để khai báo một phương thức chung.

+0

'E' có thể là một lớp con của' Foo'. –

3

Hãy xem Java documentation liên quan đến generics.

<E extends Foo> // declares the bounds for the generic type `E` 
List<E> // declares the return value 

Kiểu trả về của phương thức là List<E>.

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