2012-05-23 26 views

Trả lời

54

Đây là một bàn tay ngắn chỉ có sẵn khi xây dựng và gán một mảng.

String[] array = {"a", "b", "c"}; 

Bạn có thể làm điều này mặc dù:

List<String> list = Arrays.asList("a","b","c"); 

Như asList có thể mất "vararg" đối số.

11

Bạn có thể thử

List<String> list = Arrays.asList(new String[] {"a","b","c"}); 
+1

Không, bạn có thể làm 'Arrays.asList (" a "," b "," c ");', ngắn hơn và tương tự như câu hỏi ban đầu của OP. –

+6

Những gì Thomas nói vẫn còn hợp lệ và không xứng đáng với một downvote. – Jeshurun

+0

Không, những gì ông nói là "Bạn * có * để viết", đó là không đúng sự thật, vì vậy, có, nó * không * xứng đáng một downvote. –

11

Câu hỏi của bạn là lý do tại sao một công trình và người kia không, phải không?

Vâng, lý do là {"a","b","c"}không phải là biểu thức Java hợp lệ và do đó trình biên dịch không thể chấp nhận nó.

Điều bạn dường như ngụ ý với nó là bạn muốn chuyển bộ khởi tạo mảng mà không cần cung cấp full array creation expression (JLS 15.10).

Các biểu thức tạo mảng đúng là, như những người khác đã chỉ ra:

String[] array = {"a", "b", "c"}; 

Như đã nêu trong JLS 10.6 Array Initializers, hoặc

String[] array = new String[]{"a", "b", "c"}; 

Như đã nêu trong JLS 15.10 Array Creation Expressions.

Cái thứ hai này hữu ích cho nội tuyến, vì vậy bạn có thể chuyển nó trực tiếp thay vì biến mảng.

Kể từ khi asList phương pháp trong Arrays sử dụng đối số biến và tham số biến biểu thức được ánh xạ tới mảng, bạn có thể hoặc là vượt qua một mảng inline như trong:

List<String> list = Arrays.asList(new String[]{"a", "b", "c"}); 

Hoặc đơn giản là vượt qua các đối số biến mà sẽ được tự động được ánh xạ tới một mảng:

List<String> list = Arrays.asList("a","b","c"); 
Các vấn đề liên quan