Trong tài liệu của Máy ứng dụng , dấu chấm lửng là gì (JID...
) cho chữ ký phương thức này là gì?
public MessageBuilder withRecipientJids(JID... recipientJids)
Chức năng của ba chấm đó là gì?
Trong tài liệu của Máy ứng dụng , dấu chấm lửng là gì (JID...
) cho chữ ký phương thức này là gì?
public MessageBuilder withRecipientJids(JID... recipientJids)
Chức năng của ba chấm đó là gì?
Câu trả lời:
Đó là các varargs Java. Chúng cho phép bạn vượt qua bất kỳ số lượng đối tượng của một loại cụ thể (trong trường hợp này chúng thuộc loại JID).
Trong ví dụ của bạn, các lệnh gọi hàm sau sẽ hợp lệ:
MessageBuilder msgBuilder; //There should probably be a call to a constructor here ;)
MessageBuilder msgBuilder2;
msgBuilder.withRecipientJids(jid1, jid2);
msgBuilder2.withRecipientJids(jid1, jid2, jid78_a, someOtherJid);
Xem thêm tại đây: http://java.sun.com/j2se/1.5.0/docs/guide/lingu/varargs.html
Cách sử dụng dấu chấm lửng hoặc varargs bên trong phương thức như thể nó là một mảng:
public void PrintWithEllipsis(String...setOfStrings) {
for (String s : setOfStrings)
System.out.println(s);
}
Phương pháp này có thể được gọi như sau:
obj.PrintWithEllipsis(); // prints nothing
obj.PrintWithEllipsis("first"); // prints "first"
obj.PrintWithEllipsis("first", "second"); // prints "first\nsecond"
Bên trong PrintWithEllipsis
, loại setOfStrings
là một mảng của Chuỗi. Vì vậy, bạn có thể lưu trình biên dịch một số công việc và vượt qua một mảng:
String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);
Đối với các phương thức varargs , một tham số chuỗi được coi là một mảng cùng loại. Vì vậy, nếu hai chữ ký chỉ khác nhau ở chỗ một chữ ký khai báo một dãy và mảng kia, như trong ví dụ này:
void process(String[] s){}
void process(String...s){}
sau đó xảy ra lỗi thời gian biên dịch.
Nguồn: Đặc tả ngôn ngữ lập trình Java , trong đó thuật ngữ kỹ thuật variable arity parameter
thay vì thuật ngữ chung varargs
.
Ký hiệu ba chấm (...) thực sự được mượn từ toán học, và nó có nghĩa là "... vân vân".
Đối với việc sử dụng nó trong Java, nó varargs
có nghĩa là, có nghĩa là bất kỳ số lượng đối số nào có thể được thêm vào cuộc gọi phương thức. Các hạn chế duy nhất là varargs
phải ở cuối chữ ký phương thức và chỉ có thể có một cho mỗi phương thức.
Chúng được varargs
sử dụng để tạo ra một phương thức nhận bất kỳ số lượng đối số nào.
Chẳng hạn, phương thức PrintStream.printf sử dụng nó, vì bạn không biết sẽ sử dụng bao nhiêu đối số.
Chúng chỉ có thể được sử dụng như là vị trí cuối cùng của các đối số.
varargs
đã được thêm vào Java 1.5
Điều đó có nghĩa là phương thức chấp nhận một số lượng đối số ("varargs") khác nhau JID
. Trong phương pháp, recipientJids
được trình bày.
Điều này rất hữu ích cho các trường hợp bạn có một phương thức có thể tùy ý xử lý nhiều hơn một đối số theo cách tự nhiên và cho phép bạn viết các cuộc gọi có thể truyền một, hai hoặc ba tham số cho cùng một phương thức, mà không có sự xấu xí khi tạo một mảng trên bay.
Nó cũng cho phép các thành ngữ như sprintf
từ C; xem String.format()
, ví dụ.
…
, Unicode U + 2026. NetBeans 8 trong Java 8 báo cáo "ký tự không hợp lệ". Vì vậy, các vararg Java yêu cầu bộ ba FULL STOP (dấu chấm) ,...
.