Я играл со следующим вопросом: Используя необязательный вариант Java 8 с Stream:: flatMap и хотел добавить метод к пользовательскому Optional<T>
, а затем проверить, если это сработало.
Точнее, я хотел добавить stream()
в мой CustomOptional<T>
, который возвращает пустой поток, если значение отсутствует, или поток с одним элементом, если он присутствует.
Однако я пришел к выводу, что Optional<T>
объявляется окончательным.
Почему это так? Есть множество классов, которые не объявлены окончательными, и я лично не вижу здесь причины объявлять Optional<T>
final.
Изменить, как второй вопрос, почему все методы не могут быть окончательными, если беспокоиться о том, что они будут переопределены и оставить класс не окончательным?