9
votes

Erreur d'objet non sérialisable en travaillant sur MemCache

Bonjour à tous, je travaillais avec Memcache, et quand j'ai compilé ce code, j'ai eu des erreurs suivantes. XXX Pré>

J'ai réussi à le réparer avec la conversion de la classe d'utilisateurs, mais ± ne veux pas utiliser méthode de tostring.Je veux simplement utiliser ma classe pour ajouter et obtenir des mwethods. Comment puis-je résoudre ce problème? Voici le code que j'utilise. P>

public class User {
    public static String userKey = "UserDB";
    public static int userID ;
    public static String userName;
    public static String password;
    public static String ipAddress;
    public static String isOnline;
    public static String lastActive;

    public User(int userID, String userName, String password, String ipAddress,String isOnline,String lastActive)
    {
        this.userID = userID;
        this.userName = userName;
        this.password = password;
        this.ipAddress = ipAddress;
        this.isOnline = isOnline;
        this.lastActive = lastActive;

    }
    @Override
    public String toString() {
        System.out.println(this.userID);
        System.out.println(this.userName);
        System.out.println(this.password);
        System.out.println(this.ipAddress);
        System.out.println(this.isOnline);
        System.out.println(this.lastActive);

        return super.toString();
    }


    }


0 commentaires

3 Réponses :


3
votes

mis à jour en raison de la modification de la question.

Donc, votre classe d'utilisateurs doit mettre en œuvre le Serializable . Espérons que c'est aussi simple que l'écriture xxx

comme sérialisable ne contient aucune méthode.


1 commentaires

Désolé pour la classe. J'ai ajouté la classe d'utilisateurs comme vous l'avez dit.



13
votes

MemCache ne sait pas comment sérialiser vos objets. Vous devrez implémenter sérialisable pour avoir java gérer la série de sérialisation, ou externalisable si vous avez besoin de plus de contrôle sur le processus de sérialisation (DE).


4 commentaires

Qu'est-ce que je dois mettre en œuvre dans la méthode sérialisable exactement?


Vous devez implémenter l'interface Serializable : utilisateur de la classe publique implémente sérialisable {} . L'interface n'est qu'un marqueur qui indique au mécanisme de sérialisation que la classe utilisateur peut être sérialisée. La sérialisation réelle est effectuée automatiquement, vous n'avez donc pas à mettre en œuvre des méthodes.


En outre, la raison pour laquelle l'application de tostring () a fonctionné en premier lieu est que la chaîne est sérialisable, c'est-à-dire qu'elle peut être convertie en bytecode et à nouveau.


@Niels Vous devriez éditer votre réponse (de votre commentaire).



0
votes

Ce problème arrive car, JVM n'est pas en mesure d'obtenir des objets sérialisés en raison du conflit dans le schéma. Dans mon cas, l'ID de version série de certaines classes est défini 1L par défaut. Ces cours sont corporellement à chacun. J'ai assigné une valeur personnalisée unique. Mon problème résolu.


0 commentaires