6
votes

Serializing Une HASHTABLE, JAVA

Je n'ai jamais utilisé la sérialisation auparavant. Je pense que j'ai tout de suite à l'exception de la dernière partie de mon interrupteur de cas "q".

case "U":

            try{

                FileInputStream fis = new FileInputStream("table.obj");
                ObjectInputStream ois = new ObjectInputStream(fis);

                store = (Store)ois.readObject();

                ois.close();

            }catch(IOException | ClassNotFoundException e){

                e.printStackTrace();

            }

            break;


4 commentaires

Pouvez-vous poster la classe de magasin? Je suppose que cela n'est pas marqué comme sérialisable ou quelque chose à l'intérieur n'est pas sérialisé.


Les objets que vous essayez de stocker, sérialisables?


NotSerializableException signifie que vous essayez de sérialiser quelque chose qui n'est pas sérialisable. Montrez votre Store Classe ...


Je ne vois pas un hashtable du tout ... et qu'en est-il de la classe Store ?


3 Réponses :


10
votes

Même si l'objet HASHTABLE est sérialisé, les objets que vous stockez à l'intérieur il doit également être sérialisé. Je voudrais donc d'abord vérifier si tout ce que vous stockez à l'intérieur de votre Hashable implémente l'interface Serializable . À tout le moins, votre classe Store doit également implémenter l'interface Serializable .

update

basé sur votre Question mise à jour, il semble que la classe devra implémenter sérialisable aussi. En fait, c'est exactement ce que la première ligne de l'exception indique: xxx


6 commentaires

C'est mieux signifié comme un commentaire qu'une réponse, imo


@ HD1 OP a demandé pourquoi il recevait ces erreurs ... J'ai expliqué pourquoi et comment le réparer. :) imo c'est une réponse.


Imo, ce n'est pas une réponse, mais nous devrons accepter de ne pas être d'accord


Techniquement, la question est que quelqu'un peut m'aider? et la réponse est oui .


@ HD1 assez équitable; Je pense que cela répond à la question.


J'aurais une réponse de cette façon aussi.



1
votes

Vous ne pouvez écrire que des objets sérialisables et vous pouvez rechercher Javadoc d'Oracle pour cela et apprendre les détails.

En général, vous ajoutez implémente sérialisable à n'importe quelle classe qui répond à quelques exigences, dans la plupart des cas.

Une classe doit seulement avoir des champs qui sont eux-mêmes des objets sérialisisables ou certains des types bruts tels que int ou char , etc.

S'il y a des champs de super-type, l'instance d'objet occupant ce champ doit être sérialisable même si le super type n'est pas.

Il y a beaucoup plus à cela.


0 commentaires

1
votes

"java.io.notserializableException: élément" dit que élément de classe n'est pas sérialisable. Il doit être sérialisable car le contenu d'une carte doit être sérialisé pour que toute la carte soit sérialisable.


0 commentaires