Tại sao Map<String, ?> test = ImmutableMap.builder().build();
không biên dịch được, nhưng Map<String, ?> test = ImmutableMap.<String, Object>builder().build();
hoạt động tốt?Tại sao không ImmutableMap.builder(). Build() chọn các tham số kiểu đúng?
Mã sniplet đầu tiên không thành công với:
error: incompatible types
Map<String, ?> test = ImmutableMap.builder().build();
^
required: Map<String,?>
found: ImmutableMap<Object,Object>
Tôi tin rằng committers Ổi có nghĩa là để làm việc này.
Đây có phải là thứ có thể sửa trong ngôn ngữ không? Có nghĩa là chúng ta có thể gửi báo cáo lỗi với Oracle? – Gili
Không ... có khả năng, tôi sợ. Nếu họ không đưa nó vào suy luận kiểu tăng cường với toán tử kim cương trong Java 7, tôi nghi ngờ rằng chúng có thể bao gồm nó. Có lẽ một số trường hợp cạnh kỳ lạ sẽ không thể quản lý vì lý do nào đó, nhưng tôi không chắc chắn về các chi tiết cụ thể. –
@Gili: Tôi biết có một số công việc đang diễn ra để cải thiện suy luận kiểu cho Java 8 ... _may_ này là một cái gì đó có thể được suy ra với các quy tắc được cải thiện, tôi không chắc chắn. – ColinD