Dlaczego nie udało się skompilować Map<String, ?> test = ImmutableMap.builder().build();
, ale Map<String, ?> test = ImmutableMap.<String, Object>builder().build();
działa poprawnie?Dlaczego metoda ImmutableMap.builder(). Build() nie wybiera poprawnych parametrów?
Pierwszy kod sniplet nie powiedzie się z:
error: incompatible types
Map<String, ?> test = ImmutableMap.builder().build();
^
required: Map<String,?>
found: ImmutableMap<Object,Object>
Wierzę, że pracach uczestniczyło Guava oznaczało to zadziałało.
Czy jest to coś, co można naprawić w języku? Czy możemy zgłosić błąd w Oracle? – Gili
Nie ... prawdopodobne, obawiam się. Jeśli nie uwzględnili tego w rozszerzonej propozycji typu z operatorem diamentów w Javie 7, wątpię, czy w ogóle mogą to uwzględnić. Prawdopodobnie istnieją pewne dziwne przypadki, które z jakiegoś powodu byłyby niemożliwe do przeprowadzenia, ale nie jestem pewien co do szczegółów. –
@Gili: Wiem, że trwają prace nad ulepszeniem wnioskowania o typ Java 8 ... to może być coś, co można wywnioskować dzięki ulepszonym regułom, nie jestem pewien. – ColinD