Вы можете использовать тип Option
, который очень похож на список с нулем или одним элементом. Тип возврата Option<Object>
указывает, что метод может возвращать Object
или может возвращать специальное значение типа None
. Этот тип заменяет использование null с улучшенными проверками типов.
Пример:
public Option<Integer> parseInt(String s) {
try {
return Option.some(Integer.parseInt(s));
}
catch (Exception e) {
return Option.none();
}
}
Если вы используете это последовательно, вы можете включить IDE NULL-предупреждения или просто использовать grep для null
, который вообще не должен появляться в вашем коде, если вы используете Option.none()
везде, где вы обычно используете null
буквальный.
Option
входит в стандартную комплектацию Scala и в Haskell называется Maybe
. Ссылка выше на библиотеку под названием Functional Java , которая включает ее. Эта версия реализует интерфейс Iterable
и имеет монадические методы, которые позволяют вам красиво сочинять. Например, чтобы предоставить значение по умолчанию 0 в случае None
:
int x = optionalInt.orSome(0);
И вы можете заменить это ...
if (myString != null && !"".equals(myString))
... с этим, если у вас есть Option<String>
...
for (String s : myOptionString)