Tôi đang cố gắng hiểu quá tải phương thức và tôi có các phương pháp này.Quá tải và chênh lệch phương thức Java
public void method(int a){
System.out.println("int a");
}
//implementing interface method
@Override
public void method() {
System.out.println("interface");
}
//varargs
public void method(int ... a){
System.out.println("int ... a");
}
Sau khi gọi chúng với các thông số này,
int[] a = new int[5];
stack.method();
stack.method(1);
stack.method(5,6);
stack.method(null);
stack.method(a);
tôi có những kết quả này:
giao diện
int a
int ... một int
... a
int ... a
Theo như tôi biết, chương trình không nên biên dịch, beacuse của sự mơ hồ, nhưng nó anyway. Không nên trình biên dịch ném một lỗi?
int là một loại cơ sở, null là dành cho các đối tượng. Mỗi loại cơ sở có một giá trị mặc định (int = 0) nếu bạn không chỉ định bất kỳ giá trị nào.Khi một mảng là một đối tượng trên mỗi giá trị, thì null được hiểu là đối số vararg như là các kiểu cơ sở arent references và do đó không thể rỗng. Đơn giản như vậy –