Tại sao cố gắng để biên dịchTrộn các tham số kiểu lồng nhau và ký tự đại diện trong Java
public class GenericsFail {
public static void main(String[] args) {
accept(new HashMap<String, List<String>>());
}
public static void accept(Map<String, List<?>> multiMap) {}
}
cung cấp cho các lỗi
GenericsFail.java:7: error: method accept in class GenericsFail cannot be applied to given types;
accept(new HashMap<String, List<String>>());
^
required: Map<String,List<?>>
found: HashMap<String,List<String>>
reason: actual argument HashMap<String,List<String>> cannot be converted to Map<String,List<?>> by method invocation conversion
Các ký tự đại diện chỉ được phép nếu nó không được lồng vào bên trong List
.
thể trùng lặp của [Nested Generics với ký tự đại diện] (http: // stackoverflow .com/questions/1341093/lồng nhau-generics-with-wildcards) – artbristol