Tôi cố gắng để biên dịch đoạn mã sau:Làm cách nào để sử dụng vòng lặp foreach trong Java để lặp qua các giá trị trong HashMap?
private String dataToString(){
Map data = (HashMap<MyClass.Key, String>) getData();
String toString = "";
for(MyClass.Key key: data.keySet()){
toString += key.toString() + ": " + data.get(key);
return toString;
}
tôi nhận được một lỗi trong cho dòng nói rằng:
incompatible types found : java.lang.Object required: MyClass.Key
Phương pháp getData()
trả về một Object
(nhưng trong trường hợp này Object
trở có cấu trúc HashMap
). MyClass.Key
là một enum mà tôi đã tạo ra cho các mục đích của ứng dụng của tôi (trong một tập tin lớp học - MyClass
).
Khi tôi tạo vòng lặp foreach có cùng cấu trúc trong MyClass.java
, tôi không gặp sự cố này.
Tôi đang làm gì sai?
Không cần phải truyền getData() vào HashMap khi bạn chỉ định gán nó cho Bản đồ. Thay vào đó, hãy tạo một Bản đồ. Điều gì sẽ xảy ra nếu getData() trả về một HashMap không (giống như một TreeMap)? –
Tôi thực sự đã để lại một số thông tin ở đây ... getData() thực sự là getData (String key), trong đó khóa xác định đối tượng mong muốn mà tôi muốn nhận. Vì vậy, vì tôi biết Object tôi đang nhận được, tôi biết chính xác những gì tôi nên đúc nó. – troyal