addColumn AbstractTableModel

Pessoal, eu fiz a implementação do método addColumn para adicionar uma nova coluna com dados na JTable, mas não está dando certo. Alguém sabe o que fazer?

public void addColumn(Object id, Object[] linha){
	this.colunas.add(id);
	this.c = this.colunas.toArray();
	for(int i = 0;i < this.l.length;i++){
		Object[][] lin = Arrays.copyOf(this.l, this.l.length+1);
		lin[i][lin[i].length-1] = linha[i];
		this.l = lin;
	}
	fireTableDataChanged();
}

Qual erro ele gera?

Não entendo por que possui uma lista que armazena os ids e por que possui um array que também armazena os ids…
Poderia nos explicar melhor a necessidade de adicionar colunas ao seu table model e, também, por que fazer essas transformações todas?