2010-11-14 24 views
6

Tôi muốn chuyển một số chuỗi khác nhau đến hàm trong java, nó giả sử là chuỗi để lọc truy vấn bằng, nó có thể là 2 -4 dây.cách tốt nhất để truyền số lượng chuỗi chưa biết đến hàm trong java

Bạn nghĩ điều gì sẽ là cách tốt nhất để làm điều đó?

a) tạo quá tải cho cùng chức năng với số lượng tham số khác nhau? b) tạo một thể hiện mới của một mảng chuỗi và chuyển nó vào hàm?

bất kỳ cách nào khác có sẵn?

nhờ

Trả lời

11

Java đã được hỗ trợ danh sách đối số biến kể từ 1.5:

public void myMethod(String... values) 
{ 
    for (String val : values) 
    { 
     // do something 
    } 
} 

Các quy tắc rất đơn giản:

  • Đối số biến phải đối số cuối cùng trong chữ ký phương pháp.
  • Đó là một đối số duy nhất, vì vậy tất cả các giá trị sẽ có cùng loại.
  • Bên trong phương thức, vararg có vẻ là một mảng.
  • Khi gọi phương thức, bạn có thể chuyển các giá trị riêng lẻ hoặc một mảng.
+0

Tuyệt vời, cảm ơn! Bạn có cần phải vượt qua ít nhất một tham số hoặc có khả năng mảng sẽ trống không? –

+1

@Doron - không, bạn sẽ nhận được một mảng trống nếu bạn không vượt qua bất kỳ đối số nào. – Anon

+0

Cảm ơn bạn đã làm rõ nó –

0

Tạo quá tải (a) có lợi thế là bạn sẽ gặp phải lỗi biên dịch nếu bạn vượt qua số chuỗi sai.

Hoặc bạn có thể sử dụng varargs.

+1

Bạn không nghĩ rằng nó sẽ là một sự lãng phí mã, viết cùng một chức năng 3 lần? –

+0

@Doron Sinai: Hai trong số chúng có thể được thực hiện tầm thường, ví dụ: chuyển các giá trị null thay vì các đối số còn thiếu. Điều này tương tự như mô hình constructor kính thiên văn có những ưu điểm và nhược điểm của nó. – vitaut

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