Не могли бы вы сообщить мне, почему .get () возвращает пустое значение?
В этом случае будет возвращаться только пустое значение Необязательно, если и только если this.mMyBoundServiceHandlerThread
равно null
следовательно, возвращаемый необязательный параметр имеет состояние отсутствия и при вызове .get()
для пустого необязательного параметра он выдаст «Отсутствует значение», так как необязательный элемент имеет отсутствующее состояние (значение отсутствует).
, если вы уверены, что возвращаемый Optional не должен быть пустым, вам нужно будет отладить и отследить идентификатор mMyBoundServiceHandlerThread
в вашей программе.
С другой стороны, Optional не должениспользовать вместо «if», я говорю это потому, что в настоящее время вы игнорируете элемент из map
, идентифицированный как x
, поэтому вам может быть лучше рефакторинг на:
MyBoundServiceHandlerThread result = null;
if(this.mMyBoundServiceHandlerThread != null)
result = new MyBoundServiceHandlerThread(HANDLER_THREAD_MyBoundServiceForJob02, MyBoundServiceForJob02.this)
Такжеобратите внимание, что ваше альтернативное значение, указанное в orElse
, совпадает с значением, переданным методу map
, что выглядит необычно.Возможно, вы захотите разобраться в этом, если вы собираетесь продолжить использование Дополнительного.