निम्नलिखित कोड:एक धारावाहिक आंतरिक वर्ग धारावाहिक क्यों नहीं है?
public class TestInnerClass {
public static void main(String[] args) throws IOException {
new TestInnerClass().serializeInnerClass();
}
private void serializeInnerClass() throws IOException {
File file = new File("test");
InnerClass inner = new InnerClass();
new ObjectOutputStream(new FileOutputStream(file)).writeObject(inner);
}
private class InnerClass implements Serializable {
private static final long serialVersionUID = 1L;
}
}
निम्नलिखित अपवाद फेंकता है:
Exception in thread "main" java.io.NotSerializableException: TestInnerClass
मुझे लगता है कि भीतरी वर्ग एक TestInnerClass.this
क्षेत्र है कि TestInnerClass
के खेतों और तरीकों को यह निजी उपयोग की अनुमति देता है। आंतरिक वर्ग स्थिर solves it घोषित करना, लेकिन यदि InnerClass
को इस पहुंच की आवश्यकता है तो क्या होगा? संलग्न वर्ग के बिना एक गैर स्थैतिक आंतरिक कक्षा को क्रमबद्ध करने का कोई तरीका है, उदा। बाहरी वर्ग transient
का संदर्भ बनाकर?
संपादित करें: उदाहरण के लिए, बाहरी वर्ग तक पहुंच केवल क्रमिकरण से पहले ही आवश्यक हो सकती है। ठीक है, संकलक इसे नहीं जानता, लेकिन मैंने सोचा कि यही कारण है कि transient
कीवर्ड मौजूद है।
आप भीतरी वर्ग स्थिर घोषित करने के लिए कोशिश की थी? 'निजी स्थैतिक वर्ग इनरक्लास ' – gnat