[ 
https://issues.apache.org/jira/browse/GROOVY-11615?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17944981#comment-17944981
 ] 

Paul King commented on GROOVY-11615:
------------------------------------

Just adding a self-contained runnable example:
{code}
@Grab('com.google.guava:guava:33.4.8-jre')
import com.google.common.collect.ImmutableMap
import java.util.stream.Collectors

@groovy.transform.CompileStatic
def method() {
  var orig = ImmutableMap.of('123', '1354')
  assert orig.collectEntries{ k, v -> "$k-$v".with{ [it.size(), it] }} == [8: 
'123-1354']
  assert orig
    .entrySet()
    .stream()
    .map(entry -> entry.key + '-' + entry.value)
    .collect(Collectors.toMap(String::length, value -> value)) == [8: 
'123-1354']
}

method()
{code}

> Groovy has trouble type inferencing for Collections. The offender is 
> Collectors.asBlah set of methods. It needs the generic type <A.Y.X> to be 
> added explicitly
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-11615
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11615
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static Type Checker
>    Affects Versions: 4.0.24
>            Reporter: Saravanan
>            Priority: Minor
>
> {code:java}
> public class Interfaces {
>     public String myThing() {
>         var myArray = Arrays.asList("123", "1354");
>         var mySet = myArray.stream().collect(Collectors.toSet());
>         
>         // This call will fail
>         //      Failed to find class method 'getBytes(java.lang.Object)' or
>         //      instance method 'getBytes()' for the type: java.lang.String
>         // To make it work change the previous line to
>         //      var mySet = 
> myArray.stream().collect(Collectors.<String>toSet());
>         mySet.forEach(String::getBytes);
>     }
> }{code}
> Most Collectors.<methods> need a fully qualified type for the generic 
> parameter, without which the compile will fail (sometimes detect an Object 
> type instead of the right one)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to