2012-01-28 36 views
14

Tôi phải triển khai API cho bài tập về nhà, và người hướng dẫn của tôi đã sử dụng ký hiệu tôi không quen thuộc với một trong các phương pháp trong API (dựa trên javadoc).Tham số chuỗi ... trong Java

public void method(String... strs); 

Ý nghĩa của '...' là gì? Sau này có vẻ như tôi sẽ cần phải gọi cùng một phương thức này bằng cách sử dụng tham số thực tế chuỗi đơn, cũng như nhiều tham số thực tế của chuỗi ...

Java không có đối số tùy chọn (theo kiến ​​thức của tôi), vì vậy tôi một chút bối rối ở đây ...

Trả lời

26

Nó được gọi là varargs; http://docs.oracle.com/javase/6/docs/technotes/guides/language/varargs.html

Điều đó có nghĩa là bạn có thể chuyển số lượng đối số tùy ý cho phương thức (thậm chí là 0).

Trong phương pháp, đối số sẽ tự động được đặt trong một mảng thuộc loại được chỉ định, mà bạn sử dụng để truy cập các đối số riêng lẻ.

+0

Ah, cảm ơn phản hồi nhanh. Tôi chưa từng thấy điều này trước đây ... Rất đẹp. –

+0

Tôi sẽ chỉ thêm rằng loại chức năng này được gọi là ** variadic **: http://en.wikipedia.org/wiki/Variadic_function – amphibient

4

Điều đó có nghĩa là bạn có thể nhận tùy ý không có Chuỗi làm đối số cho phương pháp này.

Đối với phương pháp của bạn:

public void method(String... strs); 

Bạn có thể gọi nó như:

method(str) 
method(str1, str2) 
method(str1,str2,str3) 

Bất kỳ không của arugments sẽ làm việc. Trong các thế giới khác, nó là sự thay thế cho:

public void method(String[] str); 
+0

Uh, không, nó không (bạn đúng một nửa - câu đầu tiên của bạn là vấn đề). –

+0

@BrianRoach, Ồ vâng xin lỗi bạn đã đúng :) – Johnydep

+0

Không tìm thấy giới hạn tối đa về số lượng biến thể của đối số có thể mất, nhưng chắc chắn hơn ba số – Kennet

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