Вероятно, провоцирующий ответ, но версия Java 8:
if (indicator != null){
return getTest(a,indicator);
}
else{
return getTest(a);
}
- это то же самое:
if (indicator != null){
return getTest(a,indicator);
}
else{
return getTest(a);
}
И на самом деле я, вероятно, использовал бы этот более краткий способ:
if (indicator != null){
return getTest(a,indicator);
}
return getTest(a);
В вашем случае использование Optional
с такими «цепочечными» методами, как:
return indicator.map(i -> getTest(a, i)).orElseGet(() -> getTest(a));
, скрывает логику потока, в то время как фактический код показывает, что это прекрасно: у вас есть два разных случая.В общем случае вы хотите объединить обработки / преобразования, но не хотите связывать сценарии разветвления, поскольку это разные сценарии.
Если вы хотите использовать Optional
, чтобы передать факт, что этот объект может быть null
, что вполне законно, я бы, вероятно, сделал что-то, что имитирует ясную логику if-else
:
Optional<Indicator> optIndicator = findIndicator();
if (indicator.isPresent()){
return getTest(a,indicator.get());
}
return getTest(a);