Tại sao công việc này:Initialize List <> với Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
nhưng điều này không:
List<String> list = Arrays.asList({"a","b","c"});
Tại sao công việc này:Initialize List <> với Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
nhưng điều này không:
List<String> list = Arrays.asList({"a","b","c"});
Đâ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ố.
Bạn có thể thử
List<String> list = Arrays.asList(new String[] {"a","b","c"});
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");
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. –
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
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. –