在PropertyDescriptors数组上编译Stream的toMap()函数中的错误

时间:2017-09-12 11:58:27

标签: java dictionary java-8 java-stream

我有以下代码:

    PropertyDescriptor[] propertyDescriptors = Introspector.getBeanInfo(Mailingadresse.class).getPropertyDescriptors();
    Map<String, PropertyDescriptor> m = Arrays
        .stream(propertyDescriptors)
        .filter(pd -> pd.getReadMethod() != null)
        .collect(Collectors.toMap(pd -> pd.getName().toLowerCase(), Function::identity));

Eclipse显示

  

收集器类型中的toMap(Function,Function)方法不适用于参数   ((pd) - &gt; {},Function :: identity)

为什么会这样?

1 个答案:

答案 0 :(得分:5)

Function.identity()会返回一个功能界面(Function),因此您不需要方法参考,您需要调用该方法:

PropertyDescriptor[] propertyDescriptors = Introspector.getBeanInfo(Mailingadresse.class).getPropertyDescriptors();
Map<String, PropertyDescriptor> m = Arrays
    .stream(propertyDescriptors)
    .filter(pd -> pd.getReadMethod() != null)
    .collect(Collectors.toMap(pd -> pd.getName().toLowerCase(), Function.identity()));