2016-01-29 19 views
5

Próbuję zrobić Map<BooleanSupplier, List<String>> jako część mojego przepływu Dostaję dostawców, a następnie próbuję użyć niezmiennego budowniczego map.Zdefiniuj rodzaj niezmiennej mapy z konstruktorem

Coś jak:

//Build up BooleanSuppliers 
Map<BooleanSupplier, List<String>> bsList = ImmutableMap.builder() 
.put(bs1, Collections.singletonList("bs1string")) 
.put(bs2, Arrays.asList("bs4","bs6")) 
.... 
.build(); 

Problem polega na tym, że IntelliJ mówi, że typy nie podlegają zamianie nawet kiedy zrobić wyraźne obsady, ponieważ ImmutableMap jest typu <Object, Object>. Czy istnieje sposób, aby jawnie rzucić lub zainicjować niezmienny budowniczy map, aby być typu ImmutableMap<BooleanSupplier, List<String>>?

Odpowiedz

8

Określ typ rodzajowy jawnie Dzwoniąc builder():

Map<BooleanSupplier, List<String>> bsList = 
    ImmutableMap.<BooleanSupplier, List<String>>builder() 
     .put(...) 
     .build(); 
+1

Warto również zauważyć, że to może być lepiej wyrażone jako 'ImmutableListMultimap'. –

+0

@LouisWasserman Czy mógłbyś wytłumaczyć dlaczego? –

Powiązane problemy