У меня есть класс вроде этого.Необязательный тип возвращает нулевое значение
public class SomeClass {
private Optional<String> testString;
public SomeClass() {
populateFields();
}
public Optional<String> getTestString() {
return testString;
}
private void populateFields() {
if(//something is going false here){
testString = functionThatReturnsOptionalString();
}
}
}
Теперь instanceOfSomeClass.getTestString() возвращает null. Разве необязательно всегда должно содержать ненулевое значение или пустое? Я пытаюсь или избегаю isNull() и просто использую isEmpty() в своем вызывающем.
Если я положил точку останова в первой строке populateFields() и проверил значение в testString в это время, оно отображает значение как null. Значение по умолчанию для этого поля (перед назначением чего-либо) равно null.
Прошу пролить свет на эту ситуацию; и, возможно, правильное использование опционального?
Вы можете инициализировать 'testString':' private Дополнительно testString = new Необязательно ... ' –
@helpYou - Вернее, используя статический заводский метод:' Optional.absent() ', если вы используете опции Guava или 'Необязательный.путь()' для опций Java 8. – Dogs
Нет специального магии для Необязательного - это класс, как любой другой. Это означает, что значение по умолчанию для дополнительных ссылок (как и все ссылки) равно null. – immibis