2013-07-30 23 views
10

Tôi đã đoạn mã sauJava, cách hiệu quả nhất để vượt qua chuỗi mảng như Phương pháp Parameter

String[] args = {"a", "b", "c"}; 
method(args); 


private void method(String[] args){ 
    return args; 
} 

Tại sao tôi không thể làm như sau mà không có lỗi?

Mã này là ví dụ chỉ để chứng minh điểm, không phải là phương pháp thực tế tôi đang sử dụng. Tôi muốn làm phương pháp thứ hai thay vì làm sạch mã của tôi, và tránh tuyên bố một chục mảng khác nhau khi tôi chỉ sử dụng chúng một lần để vượt qua phương pháp của tôi.

Trọng tâm của câu hỏi là cách hiệu quả nhất để truyền một chuỗi các chuỗi như là một tham số phương thức.

+1

bản sao có thể có của [Tại sao chuyển {a, b, c} sang phương thức không hoạt động?] (Http://stackoverflow.com/questions/1017486/why-passing-abc-to-a-method- không hoạt động) xem thêm [Java: cú pháp khởi tạo mảng] (http://stackoverflow.com/questions/5387643/java-array-initialization-syntax) và đặc biệt là [Tại sao hằng số mảng chỉ có thể được sử dụng trong các trình khởi tạo?] (http : //stackoverflow.com/q/10520617/139010) –

+0

Câu hỏi đã chỉnh sửa và mục tiêu trả lời được xác định rõ ràng hơn về cách hiệu quả nhất để truyền mảng dưới dạng tham số, các liên kết được cung cấp không thảo luận về varargs, câu hỏi đó sẽ không còn được xem xét bản sao. –

+0

Ngẫu nhiên, câu hỏi được chỉnh sửa của bạn _still_ không đề cập đến varargs. –

Trả lời

6

Tôi nghi ngờ bạn muốn sử dụng varargs. Bạn thậm chí không cần tạo một mảng để gửi các đối số độ dài biến đổi.

String[] strings = method("a", "b", "c"); 

private String[] method(String... args){ 
    return args; 
} 

hoặc

String[] strings = array("a", "b", "c"); 

private <T> T[] array(T... args){ 
    return args; 
} 

hoặc nếu bạn muốn ngưng tụ thêm tác

String[] strings = array("a, b, c"); 

private String[] array(String args){ 
    return args.split(", ?"); 
} 
+0

Có 3 "." sau chuỗi vì tôi có 3 chuỗi? –

+1

Và phải có tham số varargs là thông số cuối cùng của một phương thức? Đây là sự tò mò vì không được đề cập trong câu hỏi ban đầu. –

+1

Không, số giai đoạn không liên quan gì đến số lượng chuỗi. Đó là cú pháp cho varargs. Và vâng, tham số varargs cần phải là cuối cùng. – Kayaman

16

thử

method(new String[]{ "a", "b", "c"}); 

cách mà hệ thống biết nó là một chuỗi mảng mới.

java không giống như php;)

2

Bạn không cần tham chiếu có tên cho mảng đó. Bạn có thể khởi tạo và chuyển một mảng ẩn danh như sau:

method (new String[]{"a", "b"}); 
6

Nếu bạn sử dụng:

method({ "a", "b", "c"}); 

sau đó java không có ý tưởng cho dù bạn muốn một mảng trong số String hoặc trong tổng số Object. Bạn có thể cho java biết rõ loại mảng như thế này:

method(new String[] { "a", "b", "c"}); 

Bằng cách đó, Java có thể nói rằng bạn có nghĩa là một mảng String.

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