Заменить анонимный внутренний класс на лямбду - PullRequest
0 голосов
/ 10 июня 2019

Я получаю предположение Сонара об изменении внутреннего класса белка на лямбду.

List<StsTxn> collect = externalPayments.stream().map(new Function<PaymentExternal, Payment>() {

            @Override
            public Payment apply(PaymentExternal t) {
                Payment payment = new Payment();
                try {
                    BeanUtils.copyProperties(payment, t);
                } catch (IllegalAccessException | InvocationTargetException e) {
                    logger.error(e.getMessage(), e);
                }
                return payment;
            }
        }).

Ответы [ 2 ]

1 голос
/ 10 июня 2019

В Java-8 JVM автоматически ищет соответствующий метод и переопределяет его, но вы можете использовать эту функцию только для функциональных интерфейсов.

 public Payment createPayment(

    List<StsTxn> collect = externalPayments.stream().map(
    t -> {
    Payment payment = new Payment();
    try {
           BeanUtils.copyProperties(payment, t);
    } catch (IllegalAccessException | InvocationTargetException e) {
           logger.error(e.getMessage(), e);
    }
    return payment;
 })
1 голос
/ 10 июня 2019

Если вы используете IntelliJ Idea, то нажатие Alt + Enter/Return автоматически преобразует это значение в лямбду.

Если вы делаете это вручную, то это выглядит следующим образом:

List<StsTxn> collect = externalPayments.stream().map( t -> {
    Payment = new Payment();
    //try-catch block
    return payment;
});

...