List<String>
hoạt động có hoặc không có nhưng List<int>
thì không. Tôi đã luôn luôn tự hỏi về điều này.Có <String> làm gì không?
Trả lời
Danh sách (và các bộ sưu tập khác) chỉ có thể giữ các đối tượng, không phải các loại nguyên thủy. Vì vậy, bạn có thể sử dụng List<Integer>
nhưng không sử dụng List<int>
. String
cũng là một đối tượng - đó là lý do tại sao nó hoạt động.
Và liên quan đến sự khác biệt giữa List
và List<String>
: sự khác biệt chỉ tồn tại trong quá trình biên dịch. Trong thời gian chạy, cả hai danh sách đều giống hệt nhau.
Cảm ơn vì điều đó. SO nó chỉ phôi nó như là một loại đối tượng String? –
@CoolBeans: điều đó không có ý nghĩa. Nếu bạn đang sử dụng Generics, bạn không cần phôi. Đó là toàn bộ vấn đề. Trình biên dịch sẽ chèn các phôi và * bảo đảm * bằng cách kiểm tra kiểu mà không có ClassCastExceptions. Và cách duy nhất bạn * có thể nhận được * một ClassCastException là bởi * làm * một diễn viên. – EJP
@EJP: Bạn nói đúng. Bình luận của tôi đã bị lùi lại. Tôi có nghĩa là để nói rằng bạn không nên làm Danh sách một số = new ArrayList <>(); mà không chỉ định một loại (chung chung hay không). Tôi sẽ xóa bình luận của tôi. Cảm ơn!!! – CoolBeans
List<int>
không hoạt động vì Generics Java không xử lý các kiểu nguyên thủy - chỉ các đối tượng (hoặc các lớp con của chúng, như Integer
). Bạn không cần phải chỉ định tham số kiểu khi sử dụng một lớp chung, nhưng trình biên dịch sẽ đưa ra một cảnh báo và bạn sẽ được yêu cầu chăm sóc mọi kiểu đúc (bao gồm giao dịch với số ClassCastExceptions
) và chính bạn.
- 1. Toán tử Bash <<< có nghĩa là gì?
- 2. << làm gì trong Python?
- 3. "<%:" làm gì?
- 4. Php <<< có nghĩa là gì?
- 5. <? = Có nghĩa là gì?
- 6. "<< -" có nghĩa là gì trong Ruby?
- 7. "<<(cmd args)" có nghĩa là gì trong vỏ?
- 8. Toán tử << làm gì trong C++?
- 9. "<:" có nghĩa là gì trong Scala?
- 10. Chuỗi <> Không có gì và chuỗi <> "" Dự phòng trong VB .NET?
- 11. <h:messages> làm gì trong JSF?
- 12. Điều gì | và << nghĩa là gì?
- 13. Có thể một <button> trong HTML làm điều gì đó mà không cần javascript?
- 14. có minHeight làm gì không?
- 15. 1 << 0 là gì?
- 16. Các toán tử này làm gì trong D 2.0: <> =! <> =! <= !> =
- 17. mẫu <> (không có bất kỳ lớp T nào trong <>) có nghĩa là gì?
- 18. cmake -D <var>: <type> = <value>: Điều gì có thể <type>?
- 19. gì <c-r> = có nghĩa là trong Vim
- 20. Từ điển <string, /> có nghĩa là gì?
- 21. Có <script><!--//--></script> có mục đích hiện đại không?
- 22. Mẫu <unsigned int N> có nghĩa là gì?
- 23. "<! DOCTYPE html>" Có nghĩa là gì?
- 24. Class_eval << - "end_eval", __FILE__, __LINE__ có nghĩa là gì trong Ruby?
- 25. Object <String> có ý nghĩa gì trong Java?
- 26. không = ~ có ý nghĩa gì trong Perl
- 27. <T kéo dài có nghĩa là gì?
- 28. "<<" and ">>" có nghĩa là gì trong C++ cho cout/cin?
- 29. <> có nghĩa là gì trong Python
- 30. Biểu tượng <> có nghĩa là gì trong MSIL?
có hoặc không có gì? Có thể vì String là một lớp và int là một kiểu gốc. – Raynos
có hoặc không có gì? ooops, 3 giây quá muộn ^^ –
http://en.wikipedia.org/wiki/Generics_in_Java –