Я много читал о случаях, когда следует использовать Optional
.
На многих страницах, которые я прочитал, говорится, что Optional
не следует использовать для закрытых переменных экземпляра и вместо этого должно возвращаться получателями.
Я бы подумал, что иметь частные переменные экземпляра как необязательные все равно будет полезно.Если кто-нибудь посмотрит на мой код, он увидит, что значение может быть пустым, вместо того, чтобы проверять документацию, чтобы узнать, можно ли вернуть null.
В Scala null никогда не используется и используется только для взаимодействия с Java.Рекомендуется всегда использовать необязательный параметр, если значение может быть нулевым.Этот подход имеет гораздо больше смысла для меня.
Вот страница с упоминанием этого:
https://blog.joda.org/2015/08/java-se-8-optional-pragmatic-approach.html
Вот пример кода.
private final String addressLine; // never null
private final String city; // never null
private final String postcode; // optional, thus may be null
// normal getters
public String getAddressLine() { return addressLine; }
public String getCity() { return city; }
// special getter for optional field
public Optional<String> getPostcode() {
return Optional.ofNullable(postcode);
}
Единственное преимущество, которое я вижу, состоит в том, что если вы хотите сериализовать объект, то теперь это возможно, поскольку он не хранит необязательные в переменной.
Недостатком является то, что выНе знаю, почтовый индекс может быть нулевым, пока вы не проверите тип возвращаемого значения получателя.Если вы новичок в коде, вы можете пропустить это добавление, расширить класс, вызывая исключение нулевого указателя.
Здесь задается вопрос о Option
в Scala.
Когда использовать Option
Почему существует разница между Java и Scala в том, как следует использовать опцию?