Warum wählt ImmutableMap.builder (). build () nicht die korrekten Typparameter aus?

8

Warum funktioniert Map<String, ?> test = ImmutableMap.builder().build(); nicht, aber Map<String, ?> test = ImmutableMap.<String, Object>builder().build(); funktioniert einwandfrei?

Das erste Code-Sniplet schlägt fehl mit:

%Vor%

Ich glaube, die Guava-Committer haben dafür gesorgt, dass das funktioniert.

    
Gili 30.01.2012, 01:27
quelle

1 Antwort

16

Dies ist kein Fehler in Guava, sondern eher in der Art und Weise, wie Java Generika löst, und das können wir nicht kontrollieren. = (

Glauben Sie uns: Das ist etwas, das wir viel Zeit damit verbracht haben. In diesem Problem erwähnt Kevin, dass wir nicht weniger als fünfzehn Versuche unternommen haben, es zu versuchen um es so zu bekommen, dass Sie diese Typparameter nicht explizit angeben müssen.

Wenn Sie nur an ImmutableMap.builder().build() interessiert sind, also keine Einträge in der Map haben, dann sollten Sie ImmutableMap.of() verwenden. Das wird keine komischen Probleme mit Generika haben: Es wird einfach funktionieren.

    
Louis Wasserman 30.01.2012, 01:39
quelle

Tags und Links