2016-05-08 9 views
0

Wenn es mehrere Referenzen in verschiedenen Klassen gibt (, die pitfallOne, pitfallTwo und pitfallThree im folgenden Beispiel sind), reicht es aus, nur eines von ihnen als zu markieren, um die Serialisierung dieses Objekts zu verhindern (unter Berücksichtigung dieser Klassen sind zu serialisieren)? Wenn nicht, was sollte als transient markiert werden?Was ist der richtige Weg um Transienten zu markieren?

Ich bin mir nicht sicher, ob Klassenstruktur Angelegenheiten hier so es so sein lassen:

class Zero { 
    ... 
} 

class One { 
    ... 
    Zero pitfallOne = new Zero(); 
} 

class Two { 
    ... 
    One instOne = new One(); 
    transient Zero pitfallTwo = instOne.pifallOne; 
} 

class Three { 
    ... 
    Two instTwo = new Two(); 
    Zero pitfallThree = instTwo.pifallTwo; 
} 
+1

Sie können nur Felder markieren, bei denen es sich um Referenzen als vorübergehende Objekte handelt. Wenn Sie verhindern möchten, dass ein Objekt serialisiert wird, müssen Sie jedes Feld markieren, das auf es als vorübergehend verweisen könnte. –

+0

Ich sehe, danke. – Vic

Antwort

0

Die transiente auf ein Feld einer Klasse gebunden ist Markierung, und nicht zu einem Objekt. Da Sie in jeder Klasse ein neues Feld haben, sollte es als transient markiert werden.