Используя Java 8 сейчас для 6+ месяцев или около того, я очень доволен новыми изменениями API. Одна область, в которой я до сих пор не уверен, - это когда использовать Optional
. Кажется, я качаюсь между желанием использовать его везде, где что-то может быть null
, и нигде вообще.
Кажется, что есть много ситуаций, когда я мог бы использовать его, и я никогда не уверен, добавляет ли он преимущества (читаемость/нулевая безопасность) или просто вызывает дополнительные накладные расходы.
Итак, у меня есть несколько примеров, и меня бы интересовали мысли сообщества о том, является ли Optional
полезным.
1 - как открытый тип возвращаемого метода, когда метод может вернуть значение null
:
public Optional<Foo> findFoo(String id);
2 - как параметр метода, когда параметр может быть null
:
public Foo doSomething(String id, Optional<Bar> barOptional);
3 - как необязательный член компонента:
public class Book {
private List<Pages> pages;
private Optional<Index> index;
}
4 - В Collections
:
В общем, я не думаю:
List<Optional<Foo>>
добавляет что-либо - тем более, что можно использовать filter()
для удаления null
значений и т.д., но есть ли какие-либо хорошие применения для Optional
в коллекциях?
Любые случаи, которые я пропустил?