{"id":210,"date":"2004-11-18T17:42:00","date_gmt":"2004-11-19T00:42:00","guid":{"rendered":"http:\/\/kodegeek.com\/blog\/?p=210"},"modified":"2004-11-18T17:42:00","modified_gmt":"2004-11-19T00:42:00","slug":"echando-codigo-%c2%bfcomo-hacer-serializacion-en-java-a-la-medida","status":"publish","type":"post","link":"http:\/\/kodegeek.com\/blog\/2004\/11\/18\/echando-codigo-%c2%bfcomo-hacer-serializacion-en-java-a-la-medida\/","title":{"rendered":"Echando c\u00f3digo: \u00bfComo hacer serializaci\u00f3n en Java a la medida?"},"content":{"rendered":"<p><img decoding=\"async\" src=\"http:\/\/java.sun.com\/im\/logo_java.gif\" \/><br \/>\n<br \/>La verdad es que nunca me hab\u00eda tocado hacer serializaci\u00f3n hasta que me top\u00e9 con RMI; En ese caso todo se limitaba a implementar la interfaz &#8216;<span style=\"font-family:courier new;\">java.io.Serializable<\/span>&#8216; y marcar algunos atributos como &#8216;<span style=\"font-family:courier new;\">trasient<\/span>&#8216; los cuales no necesitaba el final y listo, mi clase estaba preparada para ser transportada por la Red (en este caso estaba trabajando en un proyecto de clasificados para autom\u00f3viles y la forma m\u00e1s f\u00e1cil y rapida de moverlos sin preocuparme por transacciones y serializaci\u00f3n manual era esa).<\/p>\n<p>Sin embargo, leyendo varias fuentes me encontr\u00e9 con varias razones para hacer mi propia serializaci\u00f3n:<\/p>\n<ol>\n<li>Si el objeto tiene collecionesy son grandes en n\u00famero, entonces quizas Java se pueda quedar sin memoria ya que tiene guardar todo el grafo de dependencias.<\/li>\n<li>Si la clase cambia de alg\u00fan modo , entonces simplemente la des-serializaci\u00f3n fallar\u00e1 ya que su serial interno ser\u00e1 distinto (adem\u00e1s de posibles cambios en la estructura)<\/li>\n<li>Quizas la representaci\u00f3n de Java de el objeto serializado no es \u00f3ptima en tama\u00f1o (Java seguro hace un trabajo razonable).<\/li>\n<\/ol>\n<p> Asi que \u00bfcomo se hace?:<br \/>\n<\/p>\n<ol>\n<li>Implemente la interfaz Serializable<\/li>\n<li>Marque aquellos campos que no son parte de la serializaci\u00f3n como &#8216;trasient&#8217;<\/li>\n<li>Sobreescriba los m\u00e9todos &#8216;writeObject&#8217; y &#8216;readObject&#8217;<\/li>\n<li>!Listo!<\/li>\n<\/ol>\n<p> Es sorprendente como el lenguaje pone a disposici\u00f3n una herramienta tan poderoza como la serializaci\u00f3n; En otros lenguajes como C++, hay recurrer a liber\u00edas como Roguewave o Fast Objects de Poet para lograr el mismo objetivo (extra $$$$).<\/p>\n<p>Pero bueno, esto est\u00e1 muy hablado; \u00bfQue tal si usted compila y corre el siguiente c\u00f3digo de ejemplo que hice y se convence? (la clase se llama SimpleBean y es realmente simple, s\u00f3lo con fines ilustrativos)<\/p>\n<style type=\"text\/css\"><!-- .syntax0 { color: #000000; } .syntax1 { color: #cc0000; } .syntax2 { color: #ff8400; } .syntax3 { color: #6600cc; } .syntax4 { color: #cc6600; } .syntax5 { color: #ff0000; } .syntax6 { color: #9966ff; } .syntax7 { background: #ffffcc; color: #ff0066; } .syntax8 { color: #006699; font-weight: bold; } .syntax9 { color: #009966; font-weight: bold; } .syntax10 { color: #0099ff; font-weight: bold; } .syntax11 { color: #66ccff; font-weight: bold; } .syntax12 { color: #02b902; } .syntax13 { color: #ff00cc; } .syntax14 { color: #cc00cc; } .syntax15 { color: #9900cc; } .syntax16 { color: #6600cc; } .syntax17 { color: #0000ff; } .syntax18 { color: #000000; font-weight: bold; } .gutter { background: #dbdbdb; color: #000000; } .gutterH { background: #dbdbdb; color: #990066; } --><br \/><\/style>\n<p><\/p>\n<pre><span class=\"gutter\">   1:<\/span><span class=\"syntax9\">import<\/span> java.io.File;\n<br \/><span class=\"gutter\">   2:<\/span><span class=\"syntax9\">import<\/span> java.io.Serializable;\n<br \/><span class=\"gutter\">   3:<\/span><span class=\"syntax9\">import<\/span> java.io.ObjectOutputStream;\n<br \/><span class=\"gutter\">   4:<\/span><span class=\"syntax9\">import<\/span> java.io.ObjectInputStream;\n<br \/><span class=\"gutterH\">   5:<\/span><span class=\"syntax9\">import<\/span> java.io.FileInputStream;\n<br \/><span class=\"gutter\">   6:<\/span><span class=\"syntax9\">import<\/span> java.io.FileOutputStream;\n<br \/><span class=\"gutter\">   7:<\/span><span class=\"syntax9\">import<\/span> java.io.IOException;\n<br \/><span class=\"gutter\">   8:<\/span>\n<br \/><span class=\"gutter\">   9:<\/span><span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutterH\">  10:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">This<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">class<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">shows<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">how<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">use<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">custom<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">serialization<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">mechanism<\/span><span class=\"syntax3\">.<\/span>\n<br \/><span class=\"gutter\">  11:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@author<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Jose<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">V<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Nunez<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Zuleta<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">(<\/span><span class=\"syntax3\">josevnz@yahoo<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">)<\/span>\n<br \/><span class=\"gutter\">  12:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@version<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span>\n<br \/><span class=\"gutter\">  13:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@see<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">java<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">sun<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">developer<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">technicalArticles<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">Programming<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">serialization<\/span><span class=\"syntax3\">\/<\/span>\n<br \/><span class=\"gutter\">  14:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@see<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">java<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">sun<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">j2se<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">1<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">4<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">2<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">docs<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">guide<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">serialization<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">spec<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">serial<\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\">arch<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">html<\/span><span class=\"syntax3\">#<\/span><span class=\"syntax3\">wp5251<\/span>\n<br \/><span class=\"gutterH\">  15:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@see<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">www<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">javapractices<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">Topic45<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">cjp<\/span>\n<br \/><span class=\"gutter\">  16:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\">  17:<\/span><span class=\"syntax8\">public<\/span> <span class=\"syntax10\">class<\/span> SimpleBean <span class=\"syntax8\">implements<\/span> Serializable <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\">  18:<\/span>\n<br \/><span class=\"gutter\">  19:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutterH\">  20:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Constant<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">max<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">age<\/span><span class=\"syntax3\">.<\/span>\n<br \/><span class=\"gutter\">  21:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\">  22:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax8\">final<\/span> <span class=\"syntax10\">int<\/span> MAX_AGE<span class=\"syntax18\">=<\/span><span class=\"syntax5\">100<\/span>;\n<br \/><span class=\"gutter\">  23:<\/span>       \n<br \/><span class=\"gutter\">  24:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutterH\">  25:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@serial<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Name<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">user<\/span>\n<br \/><span class=\"gutter\">  26:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\">  27:<\/span>       \n<br \/><span class=\"gutter\">  28:<\/span>        <span class=\"syntax8\">private<\/span> String name;\n<br \/><span class=\"gutter\">  29:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutterH\">  30:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@serial<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Last<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">name<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">user<\/span>\n<br \/><span class=\"gutter\">  31:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\">  32:<\/span>        <span class=\"syntax8\">private<\/span> String lastname;\n<br \/><span class=\"gutter\">  33:<\/span>       \n<br \/><span class=\"gutter\">  34:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutterH\">  35:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@serial<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Age<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">user<\/span>\n<br \/><span class=\"gutter\">  36:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\">  37:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax10\">int<\/span> age;\n<br \/><span class=\"gutter\">  38:<\/span>       \n<br \/><span class=\"gutter\">  39:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax8\">transient<\/span> <span class=\"syntax8\">final<\/span> <span class=\"syntax10\">int<\/span> maxAge <span class=\"syntax18\">=<\/span> MAX_AGE;\n<br \/><span class=\"gutterH\">  40:<\/span>       \n<br \/><span class=\"gutter\">  41:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutter\">  42:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@serial<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">brothers<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">user<\/span>\n<br \/><span class=\"gutter\">  43:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\">  44:<\/span>        <span class=\"syntax8\">private<\/span> String [] brothers;\n<br \/><span class=\"gutterH\">  45:<\/span>       \n<br \/><span class=\"gutter\">  46:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutter\">  47:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@serial<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">brothers<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">user<\/span>\n<br \/><span class=\"gutter\">  48:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\">  49:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax10\">long<\/span> serialVersionUID <span class=\"syntax18\">=<\/span> <span class=\"syntax5\">20201973l<\/span>;\n<br \/><span class=\"gutterH\">  50:<\/span>\n<br \/><span class=\"gutter\">  51:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutter\">  52:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@serial<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">The<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">object<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">resources<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">were<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">released<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">early<\/span>\n<br \/><span class=\"gutter\">  53:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\">  54:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax10\">boolean<\/span> isDestroyed;\n<br \/><span class=\"gutterH\">  55:<\/span>       \n<br \/><span class=\"gutter\">  56:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutter\">  57:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Parametric<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">constructor<\/span><span class=\"syntax3\">.<\/span>\n<br \/><span class=\"gutter\">  58:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">name<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">User<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">name<\/span>\n<br \/><span class=\"gutter\">  59:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">lastname<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">User<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">last<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">name<\/span>\n<br \/><span class=\"gutterH\">  60:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">age<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">User<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">age<\/span>\n<br \/><span class=\"gutter\">  61:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">brothers<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Array<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">brothers<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">(<\/span><span class=\"syntax3\">if<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">any<\/span><span class=\"syntax3\">)<\/span>\n<br \/><span class=\"gutter\">  62:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@since<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span>\n<br \/><span class=\"gutter\">  63:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\">  64:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax6\">SimpleBean<\/span>(String name, String lastname, <span class=\"syntax10\">int<\/span> age, String [] brothers) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\">  65:<\/span>                <span class=\"syntax8\">if<\/span> (name <span class=\"syntax18\">=<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\">  66:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">NullPointerException<\/span>();\n<br \/><span class=\"gutter\">  67:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\">  68:<\/span>                <span class=\"syntax14\">this<\/span>.name <span class=\"syntax18\">=<\/span> name;\n<br \/><span class=\"gutter\">  69:<\/span>                <span class=\"syntax8\">if<\/span> (lastname <span class=\"syntax18\">=<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\">  70:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">NullPointerException<\/span>();\n<br \/><span class=\"gutter\">  71:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\">  72:<\/span>                <span class=\"syntax14\">this<\/span>.lastname   <span class=\"syntax18\">=<\/span> lastname;\n<br \/><span class=\"gutter\">  73:<\/span>                <span class=\"syntax8\">if<\/span> ( (age <span class=\"syntax18\">&lt;<\/span> <span class=\"syntax5\">0<\/span>) <span class=\"syntax18\">|<\/span><span class=\"syntax18\">|<\/span> (age <span class=\"syntax18\">&gt;<\/span> MAX_AGE) ) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\">  74:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IllegalArgumentException<\/span>();\n<br \/><span class=\"gutterH\">  75:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\">  76:<\/span>                <span class=\"syntax14\">this<\/span>.age <span class=\"syntax18\">=<\/span> age;\n<br \/><span class=\"gutter\">  77:<\/span>                <span class=\"syntax8\">if<\/span> (brothers <span class=\"syntax18\">=<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\">  78:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">NullPointerException<\/span>();\n<br \/><span class=\"gutter\">  79:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutterH\">  80:<\/span>                <span class=\"syntax14\">this<\/span>.brothers   <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> String[brothers.length];\n<br \/><span class=\"gutter\">  81:<\/span>                System.<span class=\"syntax6\">arraycopy<\/span>(brothers, <span class=\"syntax5\">0<\/span>, <span class=\"syntax14\">this<\/span>.brothers, <span class=\"syntax5\">0<\/span>, <span class=\"syntax14\">this<\/span>.brothers.length);\n<br \/><span class=\"gutter\">  82:<\/span>        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\">  83:<\/span>       \n<br \/><span class=\"gutter\">  84:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutterH\">  85:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Return<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">atring<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">representation<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">object<\/span>\n<br \/><span class=\"gutter\">  86:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@return<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">String<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">The<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">format<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">maxAge<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">name<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">lastname<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">age<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">brother1<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">brother2<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">]<\/span>\n<br \/><span class=\"gutter\">  87:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@since<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span>\n<br \/><span class=\"gutter\">  88:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\">  89:<\/span>        <span class=\"syntax8\">public<\/span> String <span class=\"syntax6\">toString<\/span>() <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\">  90:<\/span>                <span class=\"syntax8\">if<\/span> (isDestroyed) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\">  91:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IllegalStateException<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Cannot<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">call<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">this<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">method<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">after<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">calling<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">destroy!<\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutter\">  92:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\">  93:<\/span>                StringBuffer buffer <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">StringBuffer<\/span>();\n<br \/><span class=\"gutter\">  94:<\/span>                buffer.<span class=\"syntax6\">append<\/span>(maxAge);\n<br \/><span class=\"gutterH\">  95:<\/span>                buffer.<span class=\"syntax6\">append<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutter\">  96:<\/span>                buffer.<span class=\"syntax6\">append<\/span>(name);\n<br \/><span class=\"gutter\">  97:<\/span>                buffer.<span class=\"syntax6\">append<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutter\">  98:<\/span>                buffer.<span class=\"syntax6\">append<\/span>(lastname);\n<br \/><span class=\"gutter\">  99:<\/span>                buffer.<span class=\"syntax6\">append<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutterH\"> 100:<\/span>                buffer.<span class=\"syntax6\">append<\/span>(String.<span class=\"syntax6\">valueOf<\/span>(age));\n<br \/><span class=\"gutter\"> 101:<\/span>                buffer.<span class=\"syntax6\">append<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutter\"> 102:<\/span>                <span class=\"syntax8\">for<\/span> (<span class=\"syntax10\">int<\/span> i<span class=\"syntax18\">=<\/span><span class=\"syntax5\">0<\/span>; i <span class=\"syntax18\">&lt;<\/span> brothers.length; i<span class=\"syntax18\">+<\/span><span class=\"syntax18\">+<\/span>) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 103:<\/span>                        buffer.<span class=\"syntax6\">append<\/span>(brothers[i]);\n<br \/><span class=\"gutter\"> 104:<\/span>                        <span class=\"syntax8\">if<\/span> (i <span class=\"syntax18\">&lt;<\/span> brothers.length <span class=\"syntax18\">-<\/span> <span class=\"syntax5\">1<\/span>) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\"> 105:<\/span>                                buffer.<span class=\"syntax6\">append<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutter\"> 106:<\/span>                        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 107:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 108:<\/span>                buffer.<span class=\"syntax6\">append<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutter\"> 109:<\/span>                <span class=\"syntax8\">return<\/span> buffer.<span class=\"syntax6\">toString<\/span>();\n<br \/><span class=\"gutterH\"> 110:<\/span>        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 111:<\/span>       \n<br \/><span class=\"gutter\"> 112:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutter\"> 113:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Performs<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">deep<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">comparison<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">between<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">objects<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">same<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">type<\/span>\n<br \/><span class=\"gutter\"> 114:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@return<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">boolean<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">If<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">equal<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">or<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">not<\/span>\n<br \/><span class=\"gutterH\"> 115:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@since<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span>\n<br \/><span class=\"gutter\"> 116:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\"> 117:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax10\">boolean<\/span> <span class=\"syntax6\">equals<\/span>(Object object) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 118:<\/span>                <span class=\"syntax8\">if<\/span> (isDestroyed) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 119:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IllegalStateException<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Cannot<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">call<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">this<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">method<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">after<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">calling<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">destroy!<\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutterH\"> 120:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 121:<\/span>                <span class=\"syntax8\">if<\/span> (object <span class=\"syntax8\">instanceof<\/span> SimpleBean) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 122:<\/span>                        SimpleBean bean <span class=\"syntax18\">=<\/span> (SimpleBean) object;\n<br \/><span class=\"gutter\"> 123:<\/span>                        <span class=\"syntax8\">if<\/span> (<span class=\"syntax18\">!<\/span> bean.name.<span class=\"syntax6\">equals<\/span>(name)) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 124:<\/span>                                <span class=\"syntax8\">return<\/span> <span class=\"syntax14\">false<\/span>;\n<br \/><span class=\"gutterH\"> 125:<\/span>                        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 126:<\/span>                        <span class=\"syntax8\">if<\/span> (<span class=\"syntax18\">!<\/span> bean.lastname.<span class=\"syntax6\">equals<\/span>(lastname)) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 127:<\/span>                                <span class=\"syntax8\">return<\/span> <span class=\"syntax14\">false<\/span>;\n<br \/><span class=\"gutter\"> 128:<\/span>                        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 129:<\/span>                        <span class=\"syntax8\">if<\/span> (<span class=\"syntax18\">!<\/span> (bean.age <span class=\"syntax18\">=<\/span><span class=\"syntax18\">=<\/span> age)) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\"> 130:<\/span>                                <span class=\"syntax8\">return<\/span> <span class=\"syntax14\">false<\/span>;\n<br \/><span class=\"gutter\"> 131:<\/span>                        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 132:<\/span>                        <span class=\"syntax8\">if<\/span> (brothers.length <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> bean.brothers.length) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 133:<\/span>                                <span class=\"syntax8\">return<\/span> <span class=\"syntax14\">false<\/span>;\n<br \/><span class=\"gutter\"> 134:<\/span>                        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutterH\"> 135:<\/span>                        <span class=\"syntax8\">for<\/span> (<span class=\"syntax10\">int<\/span> i<span class=\"syntax18\">=<\/span><span class=\"syntax5\">0<\/span>; i <span class=\"syntax18\">&lt;<\/span> brothers.length; i<span class=\"syntax18\">+<\/span><span class=\"syntax18\">+<\/span>) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 136:<\/span>                                <span class=\"syntax8\">if<\/span> (<span class=\"syntax18\">!<\/span> brothers[i].<span class=\"syntax6\">equals<\/span>(bean.brothers[i])) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 137:<\/span>                                        <span class=\"syntax8\">return<\/span> <span class=\"syntax14\">false<\/span>;\n<br \/><span class=\"gutter\"> 138:<\/span>                                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 139:<\/span>                        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutterH\"> 140:<\/span>                        <span class=\"syntax8\">return<\/span> <span class=\"syntax14\">true<\/span>;\n<br \/><span class=\"gutter\"> 141:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">else<\/span> <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 142:<\/span>                        <span class=\"syntax8\">return<\/span> <span class=\"syntax14\">false<\/span>;\n<br \/><span class=\"gutter\"> 143:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 144:<\/span>        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutterH\"> 145:<\/span>       \n<br \/><span class=\"gutter\"> 146:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutter\"> 147:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Custom<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">serialization<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">method<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">for<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">this<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">class<\/span><span class=\"syntax3\">.<\/span>\n<br \/><span class=\"gutter\"> 148:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">output<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">The<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">object<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">stream<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">were<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">instance<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">will<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">be<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">written<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span>\n<br \/><span class=\"gutter\"> 149:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@throws<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">IOException<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">if<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">there<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">an<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">error<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">writing<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">stream<\/span>\n<br \/><span class=\"gutterH\"> 150:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@serialData<\/span>\n<br \/><span class=\"gutter\"> 151:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@since<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span>\n<br \/><span class=\"gutter\"> 152:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\"> 153:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax10\">void<\/span> <span class=\"syntax6\">writeObject<\/span>(ObjectOutputStream output) <span class=\"syntax8\">throws<\/span> IOException <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 154:<\/span>                <span class=\"syntax8\">if<\/span> (isDestroyed) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\"> 155:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IllegalStateException<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Cannot<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">call<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">this<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">method<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">after<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">calling<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">destroy!<\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutter\"> 156:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 157:<\/span>                output.<span class=\"syntax6\">defaultWriteObject<\/span>();\n<br \/><span class=\"gutter\"> 158:<\/span>        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 159:<\/span>\n<br \/><span class=\"gutterH\"> 160:<\/span>       \n<br \/><span class=\"gutter\"> 161:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutter\"> 162:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Custom<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">de<\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\">serialization<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">method<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">for<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">this<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">class<\/span><span class=\"syntax3\">.<\/span>\n<br \/><span class=\"gutter\"> 163:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">inout<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">The<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">object<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">stream<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">from<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">were<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">instance<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">will<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">be<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">read<\/span>\n<br \/><span class=\"gutter\"> 164:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@throws<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">IOException<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">if<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">there<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">an<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">error<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">writing<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">stream<\/span>\n<br \/><span class=\"gutterH\"> 165:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@throws<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">ClassNotFoundException<\/span>\n<br \/><span class=\"gutter\"> 166:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@serialData<\/span>\n<br \/><span class=\"gutter\"> 167:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@since<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span>\n<br \/><span class=\"gutter\"> 168:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\"> 169:<\/span>         <span class=\"syntax8\">private<\/span> <span class=\"syntax10\">void<\/span> <span class=\"syntax6\">readObject<\/span>(ObjectInputStream input) <span class=\"syntax8\">throws<\/span> IOException, ClassNotFoundException <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\"> 170:<\/span>                <span class=\"syntax8\">if<\/span> (isDestroyed) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 171:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IllegalStateException<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Cannot<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">call<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">this<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">method<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">after<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">calling<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">destroy!<\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutter\"> 172:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 173:<\/span>                input.<span class=\"syntax6\">defaultReadObject<\/span>();\n<br \/><span class=\"gutter\"> 174:<\/span>         <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutterH\"> 175:<\/span>       \n<br \/><span class=\"gutter\"> 176:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutter\"> 177:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Test<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">method<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">for<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">class<\/span>\n<br \/><span class=\"gutter\"> 178:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">args<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Command<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">line<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">arguments<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">arg<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">name<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">serialized<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">class<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">and<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">arg<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">1<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\"> <\/span>\n<br \/><span class=\"gutter\"> 179:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">type<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">operation<\/span><span class=\"syntax3\">(<\/span><span class=\"syntax3\">read<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">or<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">anything<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">else<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">for<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">writting<\/span><span class=\"syntax3\">)<\/span>\n<br \/><span class=\"gutterH\"> 180:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@throws<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Exception<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">On<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">any<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">fatal<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">error<\/span>\n<br \/><span class=\"gutter\"> 181:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@since<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span>\n<br \/><span class=\"gutter\"> 182:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\"> 183:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax10\">void<\/span> <span class=\"syntax6\">main<\/span>(String [] args) <span class=\"syntax8\">throws<\/span> Exception <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 184:<\/span>                <span class=\"syntax8\">if<\/span> (<span class=\"syntax18\">!<\/span> ((args <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">&<\/span><span class=\"syntax18\">&amp;<\/span> (args.length <span class=\"syntax18\">=<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax5\">2<\/span>)) ) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\"> 185:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">NullPointerException<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Please<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">provide<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">the<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">name<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">of<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">the<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">serialized<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">object<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">and<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">if<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">the<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">option<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">is<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">read<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">or<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">write<\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutter\"> 186:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 187:<\/span>                File file <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">File<\/span>(args[<span class=\"syntax5\">0<\/span>]);\n<br \/><span class=\"gutter\"> 188:<\/span>                ObjectInputStream input <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;\n<br \/><span class=\"gutter\"> 189:<\/span>                ObjectOutputStream output <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;\n<br \/><span class=\"gutterH\"> 190:<\/span>                String [] bro <span class=\"syntax18\">=<\/span> <span class=\"syntax18\">{<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">pepe<\/span><span class=\"syntax13\">\"<\/span>, <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">paco<\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">}<\/span>;\n<br \/><span class=\"gutter\"> 191:<\/span>                SimpleBean instance <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">SimpleBean<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">jose<\/span><span class=\"syntax13\">\"<\/span>, <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">nunez<\/span><span class=\"syntax13\">\"<\/span>, <span class=\"syntax5\">31<\/span>, bro);\n<br \/><span class=\"gutter\"> 192:<\/span>                System.out.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Before<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">serialization<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span> instance);\n<br \/><span class=\"gutter\"> 193:<\/span>                <span class=\"syntax8\">try<\/span> <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 194:<\/span>                <span class=\"syntax8\">if<\/span> (args[<span class=\"syntax5\">1<\/span>].<span class=\"syntax6\">equals<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">read<\/span><span class=\"syntax13\">\"<\/span>)) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\"> 195:<\/span>                        <span class=\"syntax8\">if<\/span> (file.<span class=\"syntax6\">canRead<\/span>()) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 196:<\/span>                                input <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">ObjectInputStream<\/span>(<span class=\"syntax8\">new<\/span> <span class=\"syntax6\">FileInputStream<\/span>(file));\n<br \/><span class=\"gutter\"> 197:<\/span>                                input.<span class=\"syntax6\">readObject<\/span>();\n<br \/><span class=\"gutter\"> 198:<\/span>                                System.out.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">After<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">serialization<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span> instance);\n<br \/><span class=\"gutter\"> 199:<\/span>                        <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">else<\/span> <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\"> 200:<\/span>                                <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IllegalArgumentException<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Unable<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">to<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">open<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">'<\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span> file <span class=\"syntax18\">+<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">'<\/span><span class=\"syntax13\">\"<\/span>);\n<br \/><span class=\"gutter\"> 201:<\/span>                        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 202:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">else<\/span> <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 203:<\/span>                        output <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">ObjectOutputStream<\/span>(<span class=\"syntax8\">new<\/span> <span class=\"syntax6\">FileOutputStream<\/span>(file));\n<br \/><span class=\"gutter\"> 204:<\/span>                        output.<span class=\"syntax6\">writeObject<\/span>(instance);\n<br \/><span class=\"gutterH\"> 205:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 206:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (Exception exp) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 207:<\/span>                        <span class=\"syntax8\">throw<\/span> exp;\n<br \/><span class=\"gutter\"> 208:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">finally<\/span> <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 209:<\/span>                        <span class=\"syntax8\">if<\/span> (input <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutterH\"> 210:<\/span>                                input.<span class=\"syntax6\">close<\/span>();\n<br \/><span class=\"gutter\"> 211:<\/span>                        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 212:<\/span>                        <span class=\"syntax8\">if<\/span> (output <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 213:<\/span>                                output.<span class=\"syntax6\">close<\/span>();\n<br \/><span class=\"gutter\"> 214:<\/span>                        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutterH\"> 215:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 216:<\/span>        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 217:<\/span>       \n<br \/><span class=\"gutter\"> 218:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutter\"> 219:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Early<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">resource<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">liberation<\/span>\n<br \/><span class=\"gutterH\"> 220:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\"> 221:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax10\">void<\/span> destroy () <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 222:<\/span>                <span class=\"syntax8\">if<\/span> (<span class=\"syntax18\">!<\/span> isDestroyed) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 223:<\/span>                        <span class=\"syntax8\">for<\/span> (<span class=\"syntax10\">int<\/span> i<span class=\"syntax18\">=<\/span><span class=\"syntax5\">0<\/span>; i <span class=\"syntax18\">&lt;<\/span> brothers.length; i<span class=\"syntax18\">+<\/span><span class=\"syntax18\">+<\/span>) <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 224:<\/span>                                brothers[i] <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;\n<br \/><span class=\"gutterH\"> 225:<\/span>                        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 226:<\/span>                        isDestroyed <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">true<\/span>;\n<br \/><span class=\"gutter\"> 227:<\/span>                <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 228:<\/span>        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 229:<\/span>       \n<br \/><span class=\"gutterH\"> 230:<\/span>        <span class=\"syntax3\">\/**<\/span>\n<br \/><span class=\"gutter\"> 231:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Last<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">chance<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">for<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">resource<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">liberation<\/span>\n<br \/><span class=\"gutter\"> 232:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span>\n<br \/><span class=\"gutter\"> 233:<\/span>        <span class=\"syntax8\">protected<\/span> <span class=\"syntax10\">void<\/span> <span class=\"syntax6\">finalize<\/span>() <span class=\"syntax8\">throws<\/span> Throwable <span class=\"syntax18\">{<\/span>\n<br \/><span class=\"gutter\"> 234:<\/span>                <span class=\"syntax6\">destroy<\/span>();\n<br \/><span class=\"gutterH\"> 235:<\/span>                <span class=\"syntax14\">super<\/span>.<span class=\"syntax6\">finalize<\/span>();\n<br \/><span class=\"gutter\"> 236:<\/span>        <span class=\"syntax18\">}<\/span>\n<br \/><span class=\"gutter\"> 237:<\/span>\n<br \/><span class=\"gutter\"> 238:<\/span><span class=\"syntax18\">}<\/span>\n<br \/><\/pre>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La verdad es que nunca me hab\u00eda tocado hacer serializaci\u00f3n hasta que me top\u00e9 con RMI; En ese caso todo se limitaba a implementar la interfaz &#8216;java.io.Serializable&#8216; y marcar algunos atributos como &#8216;trasient&#8216; los cuales no necesitaba el final y listo, mi clase estaba preparada para ser transportada por la Red (en este caso estaba <a class=\"read-more\" href=\"http:\/\/kodegeek.com\/blog\/2004\/11\/18\/echando-codigo-%c2%bfcomo-hacer-serializacion-en-java-a-la-medida\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/210"}],"collection":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/comments?post=210"}],"version-history":[{"count":0,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/210\/revisions"}],"wp:attachment":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/media?parent=210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/categories?post=210"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/tags?post=210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}