Trong mã:'Chuỗi ...' có nghĩa là gì?
không
String... pricingTypes
nghĩa là gì? Loại cấu trúc này là gì?
Trong mã:'Chuỗi ...' có nghĩa là gì?
không
String... pricingTypes
nghĩa là gì? Loại cấu trúc này là gì?
Đó là một đối số biến thiên. Bạn có thể chuyển một giá trị của kiểu đó bao nhiêu lần tùy thích và người gọi nhận nó như một mảng.
http://docs.oracle.com/javase/7/docs/technotes/guides/language/varargs.html
Nó được gọi là varargs. Nó hoạt động cho bất kỳ loại nào miễn là đó là đối số cuối cùng trong số đối số.
Về cơ bản, bất kỳ số tham số nào được đưa vào một mảng. Điều này không có nghĩa là nó tương đương với một mảng.
Một phương pháp mà trông giống như:
void foo(int bar, Socket baz...)
sẽ có một mảng của Socket (trong ví dụ này) gọi là baz.
Vì vậy, nếu chúng tôi gọi foo(32, sSock.accept(), new Socket())
, chúng tôi sẽ tìm một mảng có hai đối tượng Socket.
Gọi nó như foo(32, mySocketArray)
sẽ không làm việc như kiểu là không cấu hình để mất một mảng. Tuy nhiên, nếu chữ ký là một varargs của mảng, bạn có thể vượt qua một hoặc nhiều mảng và nhận được một mảng hai chiều. Ví dụ: void bar(int bar, PrintStream[] baz...)
có thể lấy nhiều mảng PrintStream và dán chúng vào một đơn PrintStream[][]
.
Rất kỳ quặc, do thực tế là mảng là đối tượng, Object... foo
có thể lấy bất kỳ số lượng mảng nào.
[Biến thể] (http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html) –
Kiểm tra [hướng dẫn đối số] (http://docs.oracle.com /javase/tutorial/java/javaOO/arguments.html) để tìm hiểu về varargs. –