Кажется, что если у вас есть экземпляр KingdomElementService<T>
, вы хотите, чтобы вызывающие абоненты save
имели возможность передать экземпляр T или нет.Таким образом, учитывая некоторые переменные:
KingdomElementService<T> kes = ... ;
T someT = ... ;
Абоненты могут сделать это:
kes.save(Optional.of(someT)); // 1
kes.save(Optional.empty()); // 2
Это делает вещи довольно неудобными для вызывающих.Вместо этого вы должны изменить KingdomElementService
, чтобы обеспечить перегрузки метода save
: один принимает аргумент, а другой - не аргументы:
interface KingdomElementService<T> {
T save(T t);
T save();
}
Если вы сделаете это, вызывающим не нужно беспокоитьсяоборачивая все в Optional
:
kes.save(someT); // 1
kes.save(); // 2
По сути, Optional
не помогает API, которые хотят принимать необязательные параметры.