Trong trường hợp varargs của bạn là tốt. Bạn không thực sự cần tạo một mảng đường dẫn mà bạn sẽ nhập vì không có gì bạn muốn làm với các đường dẫn này ngoài việc chuyển chúng theo phương thức importFrom
của bạn.
Chức năng varargs giúp bạn không phải tạo một mảng một cách rõ ràng chỉ nhằm mục đích chuyển một tập hợp các giá trị sang phương thức một lần mà bạn có vẻ ở đây.
BTW, bạn thể vẫn vượt qua trong một mảng nếu bạn muốn
public class VarargsDemo {
public static void f(String... args) {
for (String s: args) {
System.out.println(s);
}
}
public static void main(String[] args) {
String[] english = new String[]{"one", "two", "three"};
f(english);
f("uno", "dos", "tres");
}
}
Bởi vì hành vi này là giống nhau, sự khác biệt đi xuống đến một (có thể là nhỏ) câu hỏi về những gì bạn muốn phương pháp chữ ký để "nói". Khi bạn khai báo một phương thức để lấy tham số mảng rõ ràng, nó gần như là bạn muốn nhấn mạnh rằng bạn muốn hoạt động trên một đối tượng mảng, cái gì đó đã được định nghĩa bên ngoài phương thức và có sự tồn tại và tầm quan trọng riêng của nó bên ngoài phương thức, và một trong số đó, có lẽ, các hoạt động như vấn đề lập chỉ mục. Khi khai báo phương thức với varargs, nó giống như bạn đang nói "chỉ cần cho tôi một loạt các mục".
Sau đó, một lần nữa, điều này không đúng; JVM không biết sự khác biệt, tất cả những gì nó thấy là một mảng tại thời gian chạy. Nhiều lập trình viên sẽ không bận tâm đến việc chia nhỏ lông trên ý định của chữ ký phương thức. Varargs là tất cả về làm cho các cuộc gọi thuận tiện.
Điều đó nói rằng, giới hạn chính của varargs là tham số đó phải là phương thức cuối cùng của phương thức. Trong trường hợp của bạn đây không phải là một vấn đề, nhưng nói chung nó là một cái gì đó để xem xét.
Nguồn
2011-10-31 08:38:50
Bạn vẫn có thể chuyển mảng sang phương thức varargs, nó sẽ hoạt động giống nhau. –