Serialization
It is important to note that only AWT listeners which  conform to the 
Serializable protocol will be saved when the object  is stored. If an AWT object has listeners that aren't marked serializable, they  will be dropped at 
writeObject time. Developers will need, as  always, to consider the implications of making an object serializable. One  situation to watch out for is this: 
    import java.awt.*;     import java.awt.event.*;     import java.io.Serializable;          class MyApp implements ActionListener, Serializable     {         BigObjectThatShouldNotBeSerializedWithAButton bigOne;         Button aButton = new Button();                MyApp()         {             // Oops, now aButton has a listener with a reference             // to bigOne!             aButton.addActionListener(this);         }              public void actionPerformed(ActionEvent e)         {             System.out.println("Hello There");         }     }  In this example, serializing 
aButton by itself will cause  
MyApp and everything it refers to to be serialized as well. The  problem is that the listener is serializable by coincidence, not by design. To  separate the decisions about 
MyApp and the  
ActionListener being serializable one can use a nested class, as in  the following example: 
    import java.awt.*;     import java.awt.event.*;     import java.io.Serializable;      class MyApp java.io.Serializable     {          BigObjectThatShouldNotBeSerializedWithAButton bigOne;          Button aButton = new Button();           class MyActionListener implements ActionListener          {              public void actionPerformed(ActionEvent e)              {                  System.out.println("Hello There");              }          }            MyApp()          {              aButton.addActionListener(new MyActionListener());          }     }  
//please refer java doc of java.awt.Component class in java swing.
 
Comments