जावा में transient फ़ील्ड्स की आवश्यकता क्यों है और सीरियलाइज़ेशन में वे कैसे काम करते हैं?
सभी को नमस्कार! मैं जावा सीख रहा हूँ और क्लास के फ़ील्ड्स के लिए `transient` मॉडिफ़ायर पर ध्यान गया। मैंने डॉक्यूमेंटेशन पढ़ा, लेकिन पूरी तरह से समझ नहीं पाया कि इसकी आवश्यकता क्यों है।
मेरे पास एक सरल यूज़र क्लास है:
```java
public class User implements Serializable {
private String username;
private String password;
private int age;
// गेटर्स और सेटर्स
}
```
जब मैं इस क्लास के ऑब्जेक्ट को फ़ाइल में सीरियलाइज़ करता हूँ, तो मैं username और age को सेव करना चाहता हूँ, लेकिन password को सेव नहीं करना चाहता — यह गोपनीय डेटा है! मैंने मैन्युअली password को न लिखने की कोशिश की, लेकिन डीसीरियलाइज़ेशन के बाद password फ़ील्ड `null` हो जाता है, जो ऑथेंटिकेशन लॉजिक को तोड़ देता है।
प्रश्न:
1. password को सीरियलाइज़ेशन से सही तरीके से कैसे बाहर करें, ताकि डीसीरियलाइज़ेशन के बाद मैं इसे पुनर्स्थापित कर सकूँ (उदाहरण के लिए, किसी अन्य स्रोत से)?
2. केवल `static` का उपयोग क्यों नहीं कर सकते या फ़ील्ड को अस्थायी क्यों नहीं बना सकते?
3. क्या collections या nested objects के साथ `transient` का उपयोग करने में कोई खतरे हैं?
उदाहरणों के लिए आभारी रहूँगा।