Pela pergunta, parece muito difícil codificar... Mas, para fazer, até que é fácil! :)
A gente pode reescrever o método de um único objeto, codificando ele durante a instanciação deste (chamada do construtor). Exemplo:
...
List<String> listaStrings = new ArrayList<String>() {
public String toString() {
return "Reescrevi o método";
}
};
listaStrings.add("Primeira String");
System.out.println(listaStrings);
...
Interessante, ele escreveu "Reescrevi o método" na tela!
Se você retirar as linhas de "reescrita":
...
List<String> listaStrings = new ArrayList<String>();
listaStrings.add("Primeira String");
System.out.println(listaStrings);
...
Ele escreve "[Primeira String]" (agora parece normal :P ).
Obs.: Isso só pode ser feito em objetos que não são de classes "final".
Até mais!