O exemplo anterior mostrou o uso de métodos padrão, mas não em um cenário prático.
A interface Series foi amplamente utilizada, com muitos programas dependentes dela.
Foi descoberto que várias implementações de Series adicionavam um método que retorna um array com os próximos n elementos da série.
Decidiu-se melhorar a interface Series com o método
getNextArray(int n)
, onde n especifica o número de elementos a serem recuperados.Antes dos métodos padrão, adicionar esse método quebraria códigos existentes que não o definissem.
Com os métodos padrão, o novo método pode ser adicionado à interface Series sem causar problemas nos códigos existentes.
Em alguns casos, métodos padrão adicionados a uma interface relatam um erro se forem usados, quando não é possível fornecer uma implementação que funcione em todas as situações.
Esses métodos padrão definem código opcional.
Em certos casos, um método padrão pode ser definido para funcionar em qualquer situação.
O método
getNextArray()
é um exemplo, pois ele pode ser implementado usando o métodogetNext()
já exigido pela interface Series.É possível implementar a nova versão de Series com o método padrão
getNextArray()
.
O método padrão
getNextArray()
é implementado utilizando o métodogetNext()
, já presente na especificação original de Series.Qualquer classe que implemente Series poderá usar
getNextArray()
sem precisar sobrepor o método.Códigos existentes não serão invalidados com a adição de
getNextArray()
.Classes podem fornecer sua própria implementação de getNextArray() se necessário.
Vantagens do método padrão:
Permite que interfaces evoluam sem invalidar códigos existentes.
Fornece funcionalidade opcional sem exigir uma implementação de espaço reservado.
No caso de
getNextArray()
, se uma implementação de Series não precisar do método, ela não precisará fornecer uma implementação de espaço reservado, resultando em um código mais limpo.
Top comments (0)