Bom dia pessoal, estou tendo um problema com o generic e gostaria de compartilhar com vocês.
a estrutura é a seguinte:
Tenho a seguinte classe pai, sendo que ela contem um lista de SerialModel
public abstract class MovimentacaoItem<T extends Produto> extends AbstractModel implements ItemMovimentacao {
//...
private Set<SerialModel> seriaisSugeridos;
//...
}
Essa classe tem duas classes filhas que são as seguintes:
public abstract class MaterialMovimentacao extends MovimentacaoItem<Material> {
//....
}
public abstract class ComponenteMovimentacao extends MovimentacaoItem<Montagem> {
//...
}
Essa é a estrutura.
Na classe controller eu tenho o seguinte método:
private void extractSerial(List<? extends MovimentacaoItem> items, ModelAndView modelAndView, String type) {
Integer lastIndex = 0;
for (MovimentacaoItem item : items) {
if (item.isSerialized()) {
for (SerialModel serial : item.getSeriaisSugeridos()) { // <---- Problema aqui
lastIndex += 1;
String index = type + lastIndex;
modelAndView.addObject(index, serial);
}
//....
Porém o " item.getSeriaisSugeridos()" não vem tipado, sendo então o Set interpretado como sendo de Object e não de SerialModel.
Se eu tiro o generic da classe MovimentacaoItem o método getSeriaisSugeridos vem tipado normalmente Set, porém se minha classe MovimentacaoItem for generic o método getSeriaisSugeridos retorna apenas um Set.
Alguma poderia me explicar o porque isso ocorre?
desde já obrigado a todos.