Javaのお勉強その15
- シリアライズ・デシリアライズ
オブジェクトのデータを書き込み、読み込みすることをそれぞれシリアライズ、デシリアライズという。
シリアライズできるクラスはインタフェースSerializeableを実装したものである。インタフェースはメンバを持たないので、特別な実装は不要。
aというファイルにあるクラスAAのオブジェクトAを書き込む方法はつぎのようになる。
FileOutputStream fos = new FileOutputStream("a"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(A); oos.close();
逆にファイルを読み込む方法は次のようになる。aというファイルからオブジェクトを読み込む。
FileInputStream fis = new FileInputStream("a"); ObjectInputStream ois = new ObjectInputtStream(fis); AA aa = (AA)ois.readObject(); // Object型で読み込まれるのでキャストする ois.close();
transientなフィールド、staticなフィールドはシリアライズされない。
DataInputStreamのreadInt、DataOutputStreamのwriteIntなどでも特定の型のデータの読み書きができる。
スーパークラスがSelializableを実装している場合、そのサブクラスもSelializableを実装していることになる。サブクラスのオブジェクトのシリアライズ・デシリアライズはスーパークラスの部分も対象とする。
スーパークラスがSerializeを実装していない場合、サブクラスのシリアライズ・デシリアライズではスーパークラスのシリアライズ・デシリアライズは行われない。オブジェクトのスーパークラス部分はスーパークラスの引数を取らないコンストラクタで初期化される。
- コンソール
コンソールはGUIを使わない入出力を簡単・安全にする。次のようにするとConsoleオブジェクトが得られる。
Console c = system.console();
printfの書式(フラグ) String readLine() キーボードから1行テキストを読みこむ String readLine(String format,Object...args) 書式設定したうえで1行読み込む char[] readPassword エコーを無効にしたコンソールから1行テキストを読み込む char[] readPassword(String fmt,Object ...args) 書式設定したうえで、エコーを無効にしたコンソールから1行テキストを読み込む Console format(String fmt,Object... args) 書式付文字列をコンソールに書き込む void flush() コンソールをフラッシュして出力を直ちに書き込む - コレクション
コレクションとは、複数のオブジェクトを格納しておくクラス、インタフェースのことである。java.utilパッケージに属する。
主なインタフェースの種類 Collection コレクションのルート。順序も重複も規定されていない List 順序づけられたコレクション。任意の位置に対する要素の挿入・削除が速い Map キーとデータを対応させたコレクション。キーはユニークになる。 Set 重複のないコレクション、数学の集合に相当。 Queue キュー(FIFO) 主なコレクションクラス ArrayList 要素を変えられる配列のようなもの。スレッドセーフでないがVectorより高速。(Listの実装) Vector 要素を変えられる配列のようなもの。スレッドセーフ。(Listの実装) HashMap ハッシュを使ったマップ。nullが利用できる。(Mapの実装) Hashtable ハッシュを使ったマップでnullが使えない。スレッドセーフ。(Mapの実装) HashSet ハッシュを使ったセット(Setの実装)
0 件のコメント:
コメントを投稿