Hier sind die Methoden für die Klasse Person
public void externalize(DataOutputStream out) {
try {
//Personne
Util.writeUTF(getNomPersonne(), out);
Util.writeUTF(getPrenomPersonne(), out);
Util.writeUTF(getAdressePersonne(), out);
Util.writeUTF(getLieuNaisPersonne(), out);
Util.writeUTF(getPhotoPersonne(), out);
Util.writeUTF(getSituationMatrimonialePersonne(), out);
Util.writeUTF(getTelPersonne(), out);
out.writeLong(getIdPersone() == null ? 0 : getIdPersone());
out.writeInt(getVERSION() == null ? 0 : getVERSION());
out.writeChar(getSexePersonne());
Util.writeObject(getDateNaisPersonne(), out);
Util.writeObject(getLocalisationPersonne() , out);
} catch (IOException ex) {
Dialog.show("Erreur ","L'exception "+ex.getMessage(),"Ok",null);
}
}
public void internalize(int version, DataInputStream in){
try {
nomPersonne = Util.readUTF(in);
prenomPersonne = Util.readUTF(in);
adressePersonne = Util.readUTF(in);
lieuNaisPersonne = Util.readUTF(in);
photoPersonne = Util.readUTF(in);
situationMatrimonialePersonne = Util.readUTF(in);
telPersonne = Util.readUTF(in);
idPersone = in.readLong();
VERSION = in.readInt();
sexePersonne = in.readChar();
dateNaisPersonne = (Date) Util.readObject(in);
localisationPersonne = (StructureAdministrative) Util.readObject(in);
} catch (IOException ex) {
Dialog.show("Erreur ","L'exception "+ex.getMessage(),"Ok",null);
}
}
hier eine der Methoden für den Landwirt Klasse kommen, die für die schnelle Antwort Shai
@Override
public void externalize(DataOutputStream out) {
try {
//Personne
super.externalize(out);
//Agriculteur
Util.writeUTF(this.getNumPieceIdentite(), out);
Util.writeUTF(this.getPhotoPieceIdentite(), out);
Util.writeUTF(this.getPhotoPieceRecto(), out);
Util.writeUTF(this.getPhotoPieceVerso(), out);
Util.writeUTF(this.getTelAgripme(), out);
out.writeInt(this.getNombreEnfant() == null ? 0 : this.getNombreEnfant() );
out.writeInt(getTailleMenage() == null ? 0 : getTailleMenage());
out.writeDouble(getDistanceParcourue() == null ? 0 : getDistanceParcourue());
out.writeDouble(getDureeAttente() == null ? 0 : getDureeAttente());
out.writeBoolean(getaPiece() == null ? false : getaPiece());
out.writeBoolean(getMembreCooperative() == null ? false : getMembreCooperative());
out.writeInt(getParidPersone() == null ? 0 : getParidPersone());
Util.writeObject(getDateExpirPiece(), out);
Util.writeObject(getTypePieceIdentite(), out);
Util.writeObject(getTypeProprieteFoncier() , out);
Util.writeObject(getListeChamps(), out);
} catch (IOException ex) {
System.out.println("ERREUR DE L'ECRITURE DES AGRICULTEUR EST"+ ex.getMessage());
}
}
@Override
public void internalize(int version, DataInputStream in) {
try {
//Personne
super.internalize(version, in);
//Agriculteur
numPieceIdentite = Util.readUTF(in);
photoPieceIdentite = Util.readUTF(in);
photoPieceRecto = Util.readUTF(in);
photoPieceVerso = Util.readUTF(in);
telAgripme = Util.readUTF(in);
nombreEnfant = in.readInt();
tailleMenage = in.readInt();
distanceParcourue = in.readFloat();
dureeAttente = in.readFloat();
aPiece = in.readBoolean();
membreCooperative = in.readBoolean();
ParidPersone = in.readInt();
dateExpirPiece = (Date) Util.readObject(in);
typePieceIdentite = (TypePieceIdentite) Util.readObject(in);
typeProprieteFoncier = (TypeProprieteFoncier) Util.readObject(in);
listeChamps = (ArrayList<Champ>) Util.readObject(in);
} catch (IOException ex) {
System.out.println("LA LECTURE DES AGRICULTEURS DE LA BASE A TEL PROBLÈME "+ ex.getMessage());
}
}
Dank von Person erbt. Ich habe die Methode getObjectId bereits so implementiert, wie Sie es vorgeschlagen haben, aber ich habe immer noch den Fehler. Ich gebe "Farmer" in der Bauernklasse und "Person" in der Personenklasse zurück. Da ich keine Instanz von Person speichern sollte, sollte sie Externalizable auf die gleiche Weise wie die anderen Klassen implementieren? Ich habe auch ein Attribut, das ist die Liste der Felder, die der Bauer hat und welcher Typ ist java.util.List. Ich habe andere spezifische Klassen Objekte Attribute in beiden Klassen, aber alle korrekt registriert. Haben Sie eine andere Idee, warum ich könnte in einem solchen Problem laufen? –
Haben Sie beide mit der util-Klasse registriert? Wo hast du den Registrierungscode eingetragen? –
Ja, ich habe beide Klassen mit der Util-Klasse registriert und der Code ist in der Initvars-Methode (es ist ein GUI-Bluidler-Projekt) –