2012-01-10 50 views
9

Nếu một nhu cầu trở lại một kiểu Void, mà Javadoc mô tả làOn kiểu trả về Void

Một lớp đó là một lớp giữ chỗ uninstantiable để giữ một tham chiếu để đối tượng Class đại diện cho từ khóa trống Java.

Tại sao những điều sau đây vẫn yêu cầu phải trả lại null?

public Void blah() { 
    return null; // seems to always want null 
} 
+1

Vì 'Void' không phải là từ khóa, nhưng là' Đối tượng'. – BalusC

+0

chữ thường 'Void' –

+0

có thể sao chép http://stackoverflow.com/questions/676663/what-do-i-return-if-the-return-type-of-a-method-is-void-not-void – Anthea

Trả lời

14

Void là một lớp giống như bất kỳ khác, vì vậy một hàm trả về Void đã trở lại một tài liệu tham khảo (như null). Thực tế, Voidfinal và không thể khôi phục, có nghĩa là null là điều duy nhất có chức năng trả lại Void có thể trở lại.

Tất nhiên public void blah() {...} (với chữ thường v) không phải trả lại bất kỳ thứ gì.

Nếu bạn đang băn khoăn về khả năng sử dụng cho Void, xem Uses for the Java Void Reference Type?

+0

* "Tất nhiên' public void blah() {...} '(với chữ thường v) không phải trả lại bất cứ thứ gì." * Thật vậy, ** phải ** không. –

3

Void là đối tượng "wrapper" cho các loại void. Loại trả lại là void không trả lại giá trị trả về nhưng Void có giá trị trả lại. Bạn không thể sử dụng void hoặc bất kỳ loại nguyên thủy nào trong chung chung.

1

Do tài liệu cho biết đây là một lớp giữ chỗ không thể khôi phục không thể khôi phục được, do đó bạn không thể có được một cá thể, nhưng bạn phải trả lại một thứ từ Void != void. Void thực sự là một lớp học và do đó được xử lý giống như bất kỳ loại/loại khác yêu cầu một thể hiện hoặc không được trả về.

3

Từ khóa chính xác trong Java là void, không phải Void (chú ý việc sử dụng chữ thường ở đầu). Void (chữ hoa) là, theo documentation:

Lớp Void là một lớp giữ chỗ uninstantiable để giữ một tham chiếu đến đối tượng Class đại diện cho từ khóa trống Java.

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