At 10:12 PM 3/4/01 +0530, J.Ganesan wrote:
>
>
>Paul Brinkley wrote:
>
>> At 12:05 PM 3/3/01 +0530, J.Ganesan wrote:
>> >Hi all,
>> > I have a class X , which extends AbstractTableModel. When I save an
>> >object of X, the JTable whose TableModel is  the object of X, is also
>> >serialized and saved. I am interseted ONLY in the private data of X.
>> >Besides, the file size becomes unacceptably big.
>> > Any suggestions to solve this problem ?
>> > Thanks.
>>
>> If you're only interested in an X's private data, you should
>> probably extract it explicitly and save it, rather than
>> trying to serialize the X object itself.  The reason for
>> this is that some other class may need to save the state
>> of the entire X object, including any JTables it references.
>
>How can we do this ? Because, even if we implement writeObject() method
>for the private data , the defaultWriteObject() method operates on super
>class .
>With the result that JTable is also serialized.

That's correct.  (With the proviso that I still don't know
how this table model is referencing JTable non-transiently.
It was my understanding that event listeners were transient.
Can anyone give a better explanation?  Is it because
AbstractTableModel doesn't extent Component?  Is there a
John Zukowski in the house?  :-)  )

The standard way around this is externalization.  It's a
more hands-on version of serialization.  First, have your
class implement java.io.Externalizable.  Then you have to
implement two methods it defines; I can't remember the
names of them off the top of my head, but they're clearly
outlined in the Javadoc for Externalizable.  An externalizable
object writes -only- those fields you tell it to in the
"write" method.

The superclass is initialized using its no-arg constructor.
AbstractTableModel happens to have one, so you're fine there.

Again, I'm not certain serialization/externalization is the
"right" approach here, since you're explicitly interested
in saving only the table data.  I would implement a method
on X that saves just table data, but that's me.


_______________________________________________
Advanced-swing mailing list
[EMAIL PROTECTED]
http://eos.dk/mailman/listinfo/advanced-swing

Reply via email to