Comment utiliser collect call dans Java 8?

Permet de dire que nous avons ce ennuyeux morceau de code que nous avons tous eu à utiliser:

ArrayList<Long> ids = new ArrayList<Long>();
for (MyObj obj : myList){
    ids.add(obj.getId());
}

Après le passage à Java 8, mon IDE est de me dire que je peux remplacer ce code avec collect callet il génère automatiquement:

ArrayList<Long> ids = myList.stream().map(MyObj::getId).collect(Collectors.toList());

Cependant, sa me donne cette erreur:

collect(java.util.stream.Collector<? super java.lang.Long,A,R>) in Steam cannot be 
applied to: (java.util.stream.Collector<T>, capture<?>, java.util.List<T>>)

J'ai essayé le casting du paramètre, mais sa me donne pas défini A et Ret l'IDE n'est pas de donner des suggestions.

Je suis curieux de savoir comment pouvez-vous utiliser collect call dans ce scénario, et je ne pouvais pas trouver toutes les informations qui pourraient me guider correctement. Quelqu'un peut jeter une lumière?

source d'informationauteur Alexandru Severin | 2014-11-13