Home   Single Page

コンポーネントの直列化

すべてのコンポーネントは直列化(serialize)できます。つまり、コンポーネントを直列化してメモリまたはほかのレジスターに送ることができます。
そして、後に直列化復元をします。複製のように、直列化復元したコンポーネントは他のページ(デスクトップ)に属しません。直列化したものにも依存し ません。
下に示したように、直列化は複製機能を実装する時にも使えます。

<vbox id="vb">
    <listbox id="src" multiple="true" width="200px">    
        <listhead>        
            <listheader label="Population"/>            
            <listheader align="right" label="%"/>            
        </listhead>        
        <listitem value="A">        
            <listcell label="A. Graduate"/>            
            <listcell label="20%"/>            
        </listitem>        
        <listitem value="B">        
            <listcell label="B. College"/>            
            <listcell label="23%"/>            
        </listitem>        
        <listitem value="C">        
            <listcell label="C. High School"/>            
            <listcell label="40%"/>            
        </listitem>        
    </listbox>    

    <zscript>    
    int cnt = 0;    
    </zscript>    
    <button label="Clone">    
        <attribute name="onClick">        
    import java.io.*;    
    ByteArrayOutputStream boa = new ByteArrayOutputStream();    
    new ObjectOutputStream(boa).writeObject(src);    
    Listbox l = new ObjectInputStream(    
        new ByteArrayInputStream(boa.toByteArray())).readObject();        
    l.setId("dst" + ++cnt);    
    vb.insertBefore(l, self);    
        </attribute>        
    </button>    
</vbox>

もちろん、cloneメソッドで複製するのはよりよいパフォーマンスがあります。一方、直列化は異なったマシーン間でも使えます。