Map<?, ?>
có nghĩa là gì trong Java?
Tôi đã xem trực tuyến nhưng dường như không tìm thấy bất kỳ bài viết nào trên đó.Bản đồ <?, ?> có nghĩa là gì trong Java?
chỉnh sửa: Tôi thấy điều này trên MP3 Duration Java
Map<?, ?>
có nghĩa là gì trong Java?
Tôi đã xem trực tuyến nhưng dường như không tìm thấy bất kỳ bài viết nào trên đó.Bản đồ <?, ?> có nghĩa là gì trong Java?
chỉnh sửa: Tôi thấy điều này trên MP3 Duration Java
?
biểu thị một placeholder trong mà giá trị của bạn không quan tâm đến (một ký tự đại diện):
HashMap<?, ?> foo = new HashMap<Integer, String>();
Và kể từ ?
là một ký tự đại diện, bạn có thể bỏ qua nó và vẫn nhận được kết quả tương tự:
HashMap foo = new HashMap<Integer, String>();
Nhưng chúng có thể được sử dụng để chỉ định hoặc tập hợp các generics được sử dụng. Trong ví dụ này, generic đầu tiên phải thực hiện giao diện Serializable.
// would fail because HttpServletRequest does not implement Serializable
HashMap<? extends Serializable, ?> foo = new HashMap<HttpServletRequest, String>();
Nhưng tốt hơn nên sử dụng các lớp cụ thể thay vì các ký tự đại diện này. Bạn chỉ nên sử dụng ?
nếu bạn biết mình đang làm gì :)
Loại thô KHÔNG phải là kết quả tương tự như một ký tự đại diện! không có gì! – Affe
Oh thực sự? Tôi không biết điều đó. Hai trường hợp đầu tiên này khác nhau như thế nào? – mana
Thẻ hoang dã có nghĩa là 'Đây là một Bản đồ có một số loại hạn chế cụ thể trong đó, nhưng tôi không biết nó là gì.' Loại thô chỉ là loại thô, không có gì được biết về nó, không có ràng buộc, có thể có bất cứ điều gì trong đó. Trình biên dịch sẽ không cho phép bạn thêm nội dung vào Bản đồ ,?>, nhưng bạn có thể đặt bất kỳ thứ gì bạn muốn vào Bản đồ thô. – Affe
Map<?,?>
có nghĩa là tại thời gian biên dịch, bạn không biết những gì kiểu lớp của đối tượng quan trọng và giá trị của bản đồ sẽ là.
Loại ký tự đại diện của nó. http://download.oracle.com/javase/tutorial/extra/generics/wildcards.html
Xin lỗi, tôi không giỏi về generics nhưng khác biệt giữa 'Bản đồ ,?>' và 'Bản đồ
'ClassName
tôi tìm thấy bài viết này explains wildcard parametrization of generics
+1 cho liên kết – powerMicha
Tài liệu của Angelika là nơi tất cả mọi người kết thúc khi cố gắng để làm việc ra generics. – SteveD
Kể từ Java5, Generics được cung cấp với ngôn ngữ. http://download.oracle.com/javase/tutorial/java/generics/index.html
Ký hiệu có nghĩa là Bản đồ bạn đang tạo sẽ chấp nhận đối tượng của lớp A là khóa và đối tượng của lớp B làm giá trị.
Điều này giúp bạn với tư cách là nhà phát triển, do đó bạn sẽ không bỏ thêm Object nữa vào lớp học chính xác. Vì vậy, bạn wont có thể sử dụng bản đồ với các phím khác ngoài A và objets khác hơn B. Tránh phôi xấu xí và cung cấp thời gian biên dịch hạn chế
Map<?,?>
nói với bạn rằng bạn có thể sử dụng tất cả các đối tượng cho key
và value
trong bản đồ của bạn.
Nhưng thường nó rất hữu ích hơn để sử dụng Generics như thế:
Map<String, YourCustomObject> map
Vì vậy, trong bản đồ này, bạn chỉ put
một String
như chìa khóa và YourCustomObject
như giá trị có thể.
Xem hình này tutorial trên generics.
? là ký tự đại diện trong Generics. Sun ... er ... Oracle có hướng dẫn tốt về generics here. Có một phần riêng biệt trên các ký tự đại diện.
Bạn có thể nhận được câu trả lời hay hơn nếu bạn đăng thêm ngữ cảnh cho câu hỏi của mình, chẳng hạn như nơi bạn đã xem Map<?, ?>
.
'Bản đồ' như trong _collection_? hoặc phần ', ?>', như trong _generics_? Bạn đã xem javadoc chưa? – c00kiemon5ter
Được rồi, tôi chắc chắn đang nói về generics và wildcards. Phần '<' bị ẩn trong câu hỏi; được hiểu là html. Tôi đã chỉnh sửa câu hỏi. – c00kiemon5ter
@ C00k - bạn có thể muốn chỉnh sửa lại câu hỏi, ', ?>' không hiển thị. – Paul