Như bạn thấy, chính loại trừ một đối số hàm - đó là một chuỗi các chuỗi. JVM đảm nhiệm truyền bất kỳ đối số dòng lệnh nào dưới dạng một chuỗi các chuỗi tới hàm chính. Nếu không có đối số nào được đưa ra, một mảng trống sẽ được truyền - nhưng nó vẫn ở đó.
Bạn có thể cũng đã chức năng riêng của bạn được định nghĩa như thế này:
void myMain(String args[]) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
Sau đó bạn có thể gọi chức năng này, bắt chước đi qua ba đối số dòng lệnh:
String a[] = {"foo", "bar", "bah"};
myMain(a);
Hoặc bạn có thể bắt chước tình không có đối số dòng lệnh nào được cung cấp:
String a[] = {};
myMain(a);
Bạn cũng có thể vượt qua args
từ chính thực để chức năng của bạn và nó sẽ làm việc bất kể nếu bất kỳ thông số được đưa ra hay không:
public static void main(String[] args) {
myMain(args);
}
Lưu ý rằng không có kiểm tra con trỏ null trong myMain
vì vậy nếu bạn vượt qua nó một null
nó sẽ ném NPE.
Bạn có thể rõ ràng hơn không, bạn đang thực thi ứng dụng có và không có thông số như thế nào? – medopal
Câu trả lời liên quan, bạn có thể làm giống như thế này 'public void myMethod (String ... array)' theo cách này bạn có thể vượt qua số đối số này ngay cả 0, và nó sẽ không đưa ra lỗi. – medopal