Community
Participate
Working Groups
The following code should compile, however it generates invalid Java. https://gist.github.com/1603753
You need to provide type information during construction E.g. val builder = ImmutableBiMap::<Integer, String>builder() or ImmutableBiMapval<Integer, String> builder = ImmutableBiMap::builder() If you don't do that "? extends Object" is inferred, which isn't compatible to your method definition. I turn this into a feature enhancement about improving type inference along the control flow.
> val builder = ImmutableBiMap::<Integer, String>builder() This works. > ImmutableBiMapval<Integer, String> builder = ImmutableBiMap::builder() This doesn't work, even after removing val. What's the proper syntax for specifying type parameters on the left hand side?
Sorry, it's : val ImmutableBiMapval<Integer, String> builder = ImmutableBiMap::builder()
(In reply to comment #3) > Sorry, it's : > > val ImmutableBiMapval<Integer, String> builder = ImmutableBiMap::builder() Still doesn't work. // Incompatible types. Expected com.google.common.collect.ImmutableBiMap<java.lang.Integer,java.lang.String> // but was com.google.common.collect.ImmutableBiMap.Builder<K,V> val ImmutableBiMap<Integer, String> builder = ImmutableBiMap::builder() I also tried: import com.google.common.collect.ImmutableBiMap$Builder // type cannot be derived val ImmutableBiMap::Builder<Integer, String> builder = ImmutableBiMap::builder()
Fixed in 2.4
Requested via bug 522520. -M.