-
Notifications
You must be signed in to change notification settings - Fork 11.2k
Which kind of ImmutableMultimap does ImmutableMultimap.builder().build() create? #5888
Copy link
Copy link
Open
Labels
Description
Here's a quote from the class-level javadoc of ImmutableMultimap:
Warning: avoid direct usage of ImmutableMultimap as a type (as with Multimap itself). Prefer subtypes such as ImmutableSetMultimap or ImmutableListMultimap, which have well-defined Multimap.equals(java.lang.Object) semantics, thus avoiding a common source of bugs and confusion.
In this regard, it seems unfortunate that ImmutableMultimap.builder().build() returns ImmutableMultimap. Is this an ImmutableSetMultimap or a ImmutableListMultimap? At least the Javadoc should be clear about that. Or better yet:
ImmutableMultimap.Buildershould be anabstractclass, to avoid the confusion (this would be a breaking change)ImmutableMultimap.builder()should returnImmutableListMultimap.Builder(probably not a breaking change)- For clarity, consider adding explicit methods
ImmutableMultimap.setMultimapBuilder()andImmutableMultimap.listMultimapBuilder()(not a breaking change)
https://guava.dev/releases/snapshot-jre/api/docs/com/google/common/collect/ImmutableMultimap.html
Reactions are currently unavailable