Classe com parâmetro (genéricos)

2 respostas
R

Considerem o “linhas” dessa classe. É uma lista de objetos T, que serão informados pela subclasse.

public abstract class TableModelPadrao<T extends Persistente> extends AbstractTableModel { protected String[] colunas; protected List<T> linhas; public TableModelPadrao() { setColunas(criarColunas()); setLinhas(criarLinhas()); } protected abstract String[] criarColunas(); protected abstract List<T> criarLinhas(); .... public List<T> getLinhas() { return linhas; } public void setLinhas(List<T> linhas) { this.linhas = linhas; } }
Essa subclasse informa a classe dos objetos da lista. Será Orcamento. Orcamento possui os métodos getData e getValorTotal. Está dando erro na tentativa de executar o método getData e getValorTotal. O erro é: “The method getData() is undefined for the type Object”. Pelo visto, o linhas.get() não está retornando um objeto do tipo Orcamento.
O que eu devo fazer para resolver isso?

public class TableModelOrcamento<Orcamento> extends TableModelPadrao { public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { case 0: return linhas.get(rowIndex).getData(); case 1: return linhas.get(rowIndex).getValorTotal(); default: return null; } } .... }

2 Respostas

_fs

Os métodos getDate e getValorTotal estão declarados na class Persistente, certo?

Não encontrei nenhum erro, era pra funcionar.

Já tentou um System.out.println( linhas.get( rowIndex ).getClass() )?

R

Não, eles são declarados na classe orcamento. Mas mesmo os declarados na classe persistente, como getId(), não são disponiveis.
Mas acho que isso que tentei fazer não é possível não. Acho que usei de maneira incorreta o recurso de genéricos.

Criado 31 de março de 2005
Ultima resposta 2 de abr. de 2005
Respostas 2
Participantes 2