Скопируйте Guava Необязательно - PullRequest
3 голосов
/ 17 февраля 2020

Есть ли "хороший" способ создать копию необязательного объекта?

Например, скажем, у меня есть метод

Optional<Obj> doSomeStuff(Optional<Obj> input){
   if(something){
     return Optional.copyOf(input); // does this exist in some Guava library or something?
   }
   // ...
}

По сути, я хочу иметь неизменяемость так что я не передаю один и тот же Optional, и если срабатывает something, я хочу убедиться, что я создаю совершенно новый Optional с тем же содержимым input Optional (независимо от того, будет он пустым или нет).

Есть ли чистый способ сделать это? Метод Optional.copyOf не существует.

Ответы [ 2 ]

6 голосов
/ 17 февраля 2020

Класс Optional является неизменным, поэтому вам не нужно копировать. Вы можете просто сделать return input.

3 голосов
/ 17 февраля 2020

Гуава Optional уже неизменна. Вам не нужно делать его копию.

Вот начало javado c:

неизменный объект, который может содержать ненулевая ссылка на другой объект. Каждый экземпляр этого типа либо содержит ненулевую ссылку, либо ничего не содержит (в этом случае мы говорим, что ссылка «отсутствует»); никогда не говорится, что он содержит «ноль».

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