Listener Serialization : In Java Swing

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

Popular posts from this blog

Step by step guide on how to pay Income Tax that is due

Simple way producer–consumer problem's implementation in NodeJs

Rajiv Gandhi Equity Savings Scheme