Возврат объекта после установки другого свойства в одной строке - PullRequest
0 голосов
/ 28 марта 2019

Есть ли способ, которым я мог бы написать приведенный ниже код в методе в одной строке, нет проблем с кодом, но просто любопытно

public MyObject getObj(String name){
  MyObj myObj = PoolInstance.get(name);
  myObj.setFound(true);
  return myObj;
}

По какой-то причине я не могу изменить PoolInstance.

Ответы [ 3 ]

1 голос
/ 28 марта 2019

Вы можете инкапсулировать логику в установщике, который возвращает сам экземпляр объекта:

class MyObject {

    private boolean found;

    public MyObject withFound(boolean isFound) {
        this.found = isFound;
        return this;
    }
}

Код клиента:

public MyObject getObj(String name){
   return PoolInstance.get(name).withFound(true);
}

Также рассмотрите возможность использования шаблона проектирования GoF Builder для более идиоматического и гибкого кода: Пример шаблона Builder с пояснением

0 голосов
/ 28 марта 2019

Возможно с потоком, но не так читаемо.Похоже:

public MyObject getObj(String name){
    return Stream.of(PoolInstance.get(name)).peek(o -> o.setFound(true)).findFirst().get();
}
0 голосов
/ 28 марта 2019

Короткий ответ НЕТ,

Причина:

Первая интуиция была бы

return PoolInstance.get(name).setFound(true); 

но это не правильно, так как setFound не возвращает MyObj.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...