Предполагая, что вы используете Java 8, вот javadoc класса Optional
, вот что он говорит:
Контейнерный объект, который может содержать или не содержать ненулевое значение.Если значение присутствует, isPresent () вернет true, а get () вернет значение.
Теперь stream()
- это то, что работает с набором объектов, а не с одним объектом. Вот документация для stream()
:
Возвращает последовательный поток с этой коллекцией в качестве источника.По сути, вам нужно иметь List<Computer>
для вызова stream()
, выполнить фильтрацию и вернуть Optional<Computer>
по find
методам.
Поскольку вы пытаетесь вызватьstream()
для одного объекта, а не для коллекции, он отображает ошибку.
Кроме того, вызов любого метода для неинстанцированной переменной в java всегда приведет к ошибке компиляции, например:
Optional<Computer> computer ;
computer.stream(); // compilation error
Итак, нам нужно сначала инициализировать его и убедиться, что мы вызываем правильный метод в зависимости от типа ссылки.