objectinputsream defaultkonstruktor

Status
Nicht offen für weitere Antworten.

millinär

Bekanntes Mitglied
Code:
public class reealserver implements Serializable{
    transient public serverofirc soi;
      list1elem lie;    


    /** Creates a new instance of reealserver */
   reealserver() {
        
          produ();
    
    }
    public void produ(){
          soi=new serverofirc();
    }
}
das hier ist in einem collection gespeichert und wenn ich das collection per objectinputstream lesen will
dann ist bei "soi" null pointer exception

Code:
 private void readObject(java.io.ObjectInputStream in)
     throws IOException, ClassNotFoundException{
          produ();
 }
wenn ich aber das dazu mache funktioniert es ich habe gedacht der default konstruktor wird automatisch aufgerufen?[/quote]
 

Wildcard

Top Contributor
Bei dieser Methode instanzierst du ja kein Objekt sondern liest eins aus dem Speicher.
Daher muss auch kein Konstruktor aufgerufen werden.
 

millinär

Bekanntes Mitglied
hmm aber ich hätte gedacht das wird automatisch mit dem default konstruktor instanziert wenn man ausließt
 

Wildcard

Top Contributor
evtl wird der Konstruktor durchlaufen. Ich bin da nicht sicher da ich das nie selbst benutzt habe.
Aber egal wie, alle Attribute werden in der frischen Instanz gesetzt.
serverofirc ist transient, also wird es null gesetzt.
 

Wildcard

Top Contributor
Ich kann dir die genau Reihenfolge da ehrlich nicht sagen, aber wenn der Konstruktor durchlaufen wird, dann passiert das bevor die Attribute gesetzt werden. Setz einen Breakpoint rein, dann weißt du's :bae:
 

Murray

Top Contributor
Eigentlich wird im readObject doch nur produ augerufen, was das Member soi initialisiert. Ich sehe nicht, was da überhaupt eine NullPointerException auslösen könnte - kommt die vielleicht aus dem serverofirc-Konstruktor? Zeig doch mal den StackTrace der Exception.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben