Объект инициализации Java и установка свойства с помощью Stream - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь клонировать список в новый список и установить свойство в новом списке.Я пытаюсь использовать Java8 Stream, поскольку это делает клонирование простым.Мой код работает, но он дает запах этого кода от сонара:

Локальные переменные не должны объявляться, а затем немедленно возвращаться или выбрасываться (squid: S1488)

Есть лиспособ сделать это без использования локальной переменной?код:

List<myObject> clonedList = listToClone.stream()
                                                .map(item ->  {
                                                    cloned = new myObject(item);
                                                    cloned.setLifeCycle("someLifeCycle");
                                                    return cloned;
                                                })
                                                .collect(Collectors.toList());

Спасибо

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018
        public class MyObject{
         private String someLifeCycle;
         private Item item;
          public MyObject(final String someLifeCycle,final Item item){
            this.someLifeCycle = someLifeCycle;
            this.item = item;
           }
          //getters and setters
        }

И ваш код будет таким:

    List<MyObject> clonedList = listToClone.stream()
 .map(item -> new MyObject(item,"someLifeCycle")).collect(Collectors.toList());
0 голосов
/ 12 ноября 2018

Вы можете попробовать это:

List<myObject> clonedList = listToClone.stream()
                                       .map(myObject::new)
                                       .map(o -> {
                                           o.setLifeCycle("someLifeCycle");
                                           return o;
                                       })
                                       .collect(Collectors.toList());
0 голосов
/ 12 ноября 2018

Это предупреждение, поскольку вы использовали ненужную новую переменную cloned вместо прямой цепочки функций, таких как

List<myObject> clonedList = listToClone.stream()
    .map(item -> {return (new myObject(item)).setLifeCycle("someLifeCycle");})
    .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...