2016-08-04 8 views
0

ich bekommen habe eine Student-Klasse mit dem Namen und ID:Wie nur bestimmte serialisiert Felder während der Deserialisierung

import java.io.Serializable; 
public class Student implements Serializable{ 
int id; 
String name; 
public Student(int id, String name) { 
    this.id = id; 
    this.name = name; 
} 
} 

ich in folgenden Weise bin Serialisierung:

import java.io.*; 
class Persist{ 
public static void main(String args[])throws Exception{ 
    Student s1 =new Student(211,"ravi"); 

    FileOutputStream fout=new FileOutputStream("f.txt"); 
    ObjectOutputStream out=new ObjectOutputStream(fout); 

    out.writeObject(s1); 
    out.flush(); 
    System.out.println("success"); 
} 
} 

Bei der Deserialisierung, wenn ich don‘ t wollen id zurück, was soll ich tun? Zu beachten ist, dass id serialisiert werden sollte, also keine Verwendung von transient oder statisch.

+0

gezeigt, warum nicht du darfst transient verwenden? – JavaHopper

+0

überschreiben readObject(). –

+0

Irgendein Körper bitte helfen Sie mir mit senario – binesh

Antwort

0

sollten Sie benutzerdefinierte Deserialisierung folgen, durch zwingende readObject() Methode in Student Klasse, wie unter

Student-Klasse

import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.Serializable; 

public class Student implements Serializable 
{ 
    int id; 
    String name; 

    public Student(int id, String name) 
    { 
     this.id = id; 
     this.name = name; 
    } 

    @Override 
    public String toString() 
    { 
     return "[id: " + id + " , name: " + name+ "]"; 
    } 

    private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { 
     ois.defaultReadObject(); 
     //set those values to their default, which you don't want to retrieve 
     this.id = 0; 
    } 
} 

Klasse Tester

import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 

public class Test 
{ 
    public static void main(String args[]) throws Exception 
    { 
     Student s1 = new Student(211, "ravi"); 

     FileOutputStream fout = new FileOutputStream("f.txt"); 
     ObjectOutputStream out = new ObjectOutputStream(fout); 

     out.writeObject(s1); 
     out.flush(); 
     System.out.println("success"); 

     FileInputStream fis = new FileInputStream("f.txt"); 
     ObjectInputStream ois = new ObjectInputStream(fis); 
     s1 = (Student)ois.readObject(); 
     System.out.println(s1); 
    } 
}