Por que <T> opcional é declarado como uma classe final?
Eu estava brincando com a seguinte pergunta:Usando o Java 8's opcional com Stream :: flatMap e queria adicionar um método a um costumeOptional<T>
e depois verifique se funcionou.
Mais preciso, eu queria adicionar umstream()
para o meuCustomOptional<T>
que retorna um fluxo vazio se nenhum valor estiver presente ou um fluxo com um único elemento, se estiver presente.
No entanto, cheguei à conclusão de queOptional<T>
é declarado como final.
Porque isto é assim? Existem muitas classes que não são declaradas como finais e, pessoalmente, não vejo uma razão aqui para declararOptional<T>
final.
Como segunda pergunta, por que nem todos os métodos podem ser finais, se a preocupação é que eles sejam substituídos e deixem a classe não final?