Avatar ·

जावा में 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` का उपयोग करने में कोई खतरे हैं? उदाहरणों के लिए आभारी रहूँगा।