2017-10-11 4 views
0

j'ai fait une classe de liste générique:Ne peut pas faire JSON (avec Gson) sur une liste générique

public class FahrzeugListe<T extends Fahrzeug> implements TableModel { 

private T[] array; 
private int nextFreeSlot = 0; 

private List<TableModelListener> tableListener = new ArrayList<TableModelListener>(); 

public FahrzeugListe(int capacity){ 
    array = (T[]) new Fahrzeug[capacity]; 
} 

public void add (T o){ 
    if(nextFreeSlot == array.length){ 
     throw new IllegalStateException("Liste ist voll!"); 
    } 
    array[nextFreeSlot] = o; 
    nextFreeSlot++; 
    for(TableModelListener l : tableListener){ 
     l.tableChanged(new TableModelEvent(this));/
    } 
} 

Son ofc pas la classe, mais je pense, c'est la partie importante de mon problème. J'ai une autre classe pour faire ces objets "Fahrzeug", par ex. une voiture ou un bus ... Ces objets que j'ajoute à travers une interface graphique dans cette liste, et à mon interface graphique j'ai ajouté un bouton, où je voulais enregistrer cette liste à JSON, donc, quand je redémarre mon programme, je peux prendre les informations sur ma liste d'abord et puis travailler avec elle. Dans ma classe GUI i mis en œuvre la méthode suivante pour un bouton "Enregistrer":

private class SaveListener implements ActionListener{ 

    @Override 
    public void actionPerformed(ActionEvent e) { 

     String json = new Gson().toJson(fahrzeugListe); 
     System.out.println("The text, should be written in jason: " +json); 
    } 
} 

D'une certaine façon que je reçois ce message d'erreur:

Exception dans le thread "AWT-EventQueue-0" java.lang.StackOverflowError

Quelqu'un peut-il m'aider s'il vous plaît? :)

+0

erreur Stackoverflow - vous avez probablement une récursion infinie dans le code quelque part. –

Répondre

0
private transient List<TableModelListener> tableListener = new ArrayList<TableModelListener>(); 

J'ai ajouté le mot-clé transitoire, et tout fonctionne bien maintenant xD