NurseViewPrescriptionWrapper

NurseViewPrescriptionWrapper

public static Set<NurseViewPrescriptionWrapper> create(final Set<NurseViewPrescriptionDTO> nurseViewPrescriptionDTOs) {
  return nurseViewPrescriptionDTOs.stream()
      .map(new Function<NurseViewPrescriptionDTO, NurseViewPrescriptionWrapper>() {
        @Override
        public NurseViewPrescriptionWrapper apply(NurseViewPrescriptionDTO input) {
          return new NurseViewPrescriptionWrapper(input);
        }
      })
      .collect(Collectors.toSet());
}

我将上述代码转换为Java 8 lamda函数,如下所示。
public static Set<NurseViewPrescriptionWrapper> create(final Set<NurseViewPrescriptionDTO> nurseViewPrescriptionDTOs) {
  return nurseViewPrescriptionDTOs.stream()
      .map(input -> new NurseViewPrescriptionWrapper(input))
      .collect(Collectors.toSet());
}

现在,我收到声纳问题,例如Lambdas should be replaced with method references,以“->”这个符号。我该如何解决这个问题?

最佳答案

你的lambda,

.map(input -> new NurseViewPrescriptionWrapper(input))

可以替换为
.map(NurseViewPrescriptionWrapper::new)

该语法是方法参考语法。在NurseViewPrescriptionWrapper::new的情况下,它是一个特殊的方法引用,它引用一个构造函数

07-22 07:42