Tôi đang cố gắng tạo một ImmutableMap
ánh xạ các lớp thành chuỗi (lưu ý: đây là, tất nhiên, chỉ là một ví dụ!). Tuy nhiên, cái gì đó nhưSự cố khi tạo Bản đồ Không có Bản đồ với Lớp <?> làm khóa
ImmutableMap<Class<?>, String> map = ImmutableMap.of(
Integer.class, "Integer",
Date.class, "Date"
);
mang lại cho tôi những lỗi sau
Type mismatch: cannot convert from ImmutableMap<Class<? extends Object&Comparable<?>&Serializable>,String> to ImmutableMap<Class<?>,String>
Lạ lùng thay nó làm việc nếu tôi thêm một dàn diễn viên để Class<?>
cho bất kỳ (!) Trong những chìa khóa, ví dụ:
ImmutableMap<Class<?>, String> map = ImmutableMap.of(
Integer.class, "Integer",
Date.class, "Date",
(Class<?>) String.class, "String",
long.class, "Long"
);
sẽ hoạt động tốt. Tôi đang bối rối bởi hành vi này: Đối với một, tại sao nó không hoạt động mà không có phôi? Tất cả đều là các lớp và nó thực sự không có gì chung hơn Class<?>
, vậy tại sao nó không hoạt động? Thứ hai, tại sao một diễn viên trên bất kỳ một trong những chìa khóa làm cho nó hoạt động?
(mặt lưu ý: nếu bạn đang tự hỏi tại sao tôi thậm chí muốn làm một điều như vậy - có, đó là vì Reflection ...)
Edit: Tôi thực sự chỉ ra rằng điều này sẽ làm việc, nhưng Tôi muốn stil muốn hiểu hành vi trên
ImmutableMap<Class<?>, String> map = ImmutableMap.<Class<?>, String>builder()
.put(Integer.class, "Integer")
.put(Date.class, "Date")
.build();
Tuyệt vời. Cảm ơn! –
@ IngoBürk Bạn được chào đón :) –