2016-07-07 19 views
5

Vì vậy, tôi muốn kiểm tra Void loại sau đó tôi đã viết chương trình đơn giản này:Tại sao không thể sử dụng Void như kiểu trả cho phương pháp chính

package ehsan; 

public class NumTest { 
    public static Void main(String[] args) { 
     System.out.println("Hello, World!"); 
     return null; /* The compiler forced me to do so. I just can't realize what is the point in returning in Void type!? */ 
    } 
} 

Vì vậy, bây giờ khi tôi muốn biên dịch, trình biên dịch phàn nàn:

main method must return a value of type void 

Tại sao trình biên dịch thấy rằng tôi không trả lại gì và đang sử dụng Void?

+5

'Void' và' void' không giống nhau. – Eran

+3

Vì tiêu chuẩn xác định chữ ký của phương thức chính là 'public static void main (String ... args)'. Tự động hóa/hủy hộp thư không liên quan gì đến chữ ký phương thức. Bạn không thể tự động chọn chữ ký. – tkausl

+3

Void không phải là một wrapper cho void – Eran

Trả lời

4

Bạn nên sử dụng void (chữ thường v) không phải Void đối tượng. Void đối tượng sẽ không nhận hộp tự động như ví dụ: int/Integer, xem Java Language Specification để biết danh sách các đối tượng hộp tự động.

Void không phải là một wrapper cho void, nó chỉ là một đối tượng mà có một cái tên rất giống nhau nên nó có thể được sử dụng ở những nơi bạn cần phải xác định một kiểu trả về (như ví dụ Callable<T>), nó chỉ dành cho mục đích tài liệu và để giải quyết một số lớp chung loại trả về.

Trường hợp sử dụng thứ hai được phản ánh (khi bạn muốn kiểm tra giá trị trả lại của hàm void, bạn sẽ nhận được Void.TYPE).

dòng Đúng là:

+0

Vì vậy, việc sử dụng duy nhất của 'Void' là trong việc xác định loại chung? (Xin lỗi cho câu hỏi mới của tôi :) –

+0

Thông thường, có một số trường hợp sử dụng khác liên quan đến sự phản chiếu, vì nó được viết trong tài liệu 'Void': * Lớp Void là lớp giữ chỗ không thể khôi phục để giữ tham chiếu đến đối tượng Lớp đại diện cho Từ khóa Java void.* –

2

Void là một loại lớp, vì vậy trình biên dịch hy vọng bạn trả về một giá trị cho nó. Bạn nên sử dụng void với chữ thường.

Nguyên nhân của lỗi của bạn:

main method must return a value of type void

là do các quy tắc phương pháp chính nên luôn luôn trả void - đó là một từ khóa java không phải là một kiểu lớp.

1

Bạn phải sử dụng void thay vì Void

Như thế này:

1

Typo error.

Đó là void không Void

Nó được xảy ra Void đó là một lớp trong java. Từ Tài liệu

The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void.

+0

Không có người đàn ông nào không có lỗi đánh máy, tôi chỉ đang thử nghiệm 'Void' :) –

+0

Nhật thực của tôi nói Phương pháp này phải trả về kết quả của loại Void –

+0

Xin lưu ý rằng 'void' khác với' Void' .... –

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