I faced with a problem, when I use method reference as a function in Collectors.groupingBy I get an error: "no suitable method found for collect". But! if I replaced method reference with a lambda expression everything works fine.
interface Iface{
public int getPropertyOfClassA();
public void setPropertyOfClassA(int propertyOfClassA);
}
class A implements Iface{
private int propertyOfClassA;
@Override
public int getPropertyOfClassA() {
return propertyOfClassA;
}
@Override
public void setPropertyOfClassA(int propertyOfClassA) {
this.propertyOfClassA = propertyOfClassA;
}
}
class B{
private A objectA;
public int getPropertyOfClassA() {return objectA.getPropertyOfClassA();}
}
class C extends B {
int propertyOfClassC;
public int getPropertyOfClassC() {
return propertyOfClassC;
}
public void setPropertyOfClassC(int propertyOfClassC) {
this.propertyOfClassC = propertyOfClassC;
}
}
public class example {
public static void main(String[] ars){
List<B> listOfB = new ArrayList<>();
Map<Integer, List<B>> groupedByPropertyOfClassA = listOfB
.stream()
.collect(Collectors.groupingBy(C::getPropertyOfClassA));
}
}