トップ «前の日(11-14) 最新 次の日(11-16)» 追記

SewiGの日記

2004|01|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|

2005-11-15 [火]

[Java][Programming] オブジェクトをファイルへ書き出す

モバイルエージェントの研究をしていてオブジェクトをファイルに書き出そうと考えました。かつてはシリアライズといえば、Serializableインタフェースによる方法が利用されていました。しかしこの方法だと、属性が追加されるなどした場合の互換性の問題がありました。

そこで、XMLEncoder/XMLDecoderによる方法です。J2SE 1.4から導入されました。これならSerializableインタフェースを実装しなくてもよく、Beansの規約に沿ってクラスを実装するだけ。結果はXMLとして書き出されるので、エディタでも閲覧変更可能。キタコレ。

使用例

(Idol.java)

import java.io.*;

public class Idol {
	private String name;
	private int age;
	private double height;
	private double weight;
	private double bust;
	private double waist;
	private double hip;
	
	public Idol() {}
	public Idol(String name, int age, double height, double weight, 
			double bust, double waist, double hip) {
		this.name = name;
		this.age = age;
		this.height = height;
		this.weight = weight;
		this.bust = bust;
		this.waist = waist;
		this.hip = hip;
	}
	public void setName(String name) { this.name = name; }
	public String getName() { return name; } 
	public void setAge(int age) { this.age = age; }
	public int getAge() { return age; }
	public void setHeight(double height) { this.height = height; }
	public double getHeight() { return height; }
	public void setWeight(double weight) { this.weight = weight; }
	public double getWeight() { return weight; }
	public void setBust(double bust) { this.bust = bust; }
	public double getBust() { return bust; }
	public void setWaist(double waist) { this.weight = weight; }
	public double getWaist() { return waist; }
	public void setHip(double hip) { this.hip = hip; }
	public double getHip() { return hip; }
	public String toString() {
		return  name + "です、えへ☆";
	}
}

(XMLEncoderTest.java)

import java.beans.*;
import java.io.*;

public class XMLEncoderTest {
	public static void main(String[] args) {
		Idol haruka = new Idol("天海春香", 16, 158.0, 45.0, 83.0, 56.0, 80.0);
		
		try {
			XMLEncoder writer = new XMLEncoder(
			new BufferedOutputStream(new FileOutputStream("haruka.xml")));
			writer.writeObject(haruka);
			writer.close();
		} catch(FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}

(XMLDecoderTest.java)

import java.beans.*;
import java.io.*;

public class XMLDecoderTest {
	public static void main(String[] args) {
		try {
			XMLDecoder reader = new XMLDecoder(
			new BufferedInputStream(new FileInputStream("haruka.xml"))); 
			Idol haruka = (Idol)reader.readObject(); 
			reader.close();
			
			System.out.println(haruka);
		} catch(FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}

実行例

・コンパイル
$ javac -cp . *.java

・書き出し
$ java -cp . XMLEncoderTest

・読み出し
$ java -cp . XMLDecoderTest
天海春香です、えへ☆

2006-11-15 [水]

[Shopping][Mac] MacBook Pro 2.16GHz Intel Core 2 Duo

MacBook ProMacBook Pro買ったよー。昨日、Apple Storeから届いたよ♪

BTOで、梅の標準セットにRAMを+1GBの2GBにしてキーボードをUSにしただけ。

本当はLeopardが出るまで待とうかと思ったけどLeopardを待ってたら、今度はSanta Rosaが出るまで待ちたくなって、いつまでも買えない気がしたから。

先日MacBookにもC2D搭載してProとの差が埋まりつつあるけど、軽量化も性能も中途半端なMacBookはいらない。多少重くても大きくて性能が良いMacBook ProかLet's note並の軽いノートのどっちかだよね。

とりあえず、初期不良かどうかの確認をして日常作業ができる状態にカスタマイズしないとね。


2007-11-15 [木]

[Software] Safari 3 Beta 3.0.4

LeopardにしたのでTigerのアップデートは関係ないな、と思っていたらWindowsのSafariがアップデート。日本語入力が可能に。これで実用になりそうですね。とはいうものの、Web屋からすれば動作確認環境が1つ増えるだけな気がしなくもありませんが… とにかくサクサク感が魅力なSafari for Windows。機能拡張次第ではシェアが逆転するかもしれませんね。

本日のツッコミ(全1件) [ツッコミを入れる]

Alyne [So that's the case? Quite a revleaiton that is.]


Copyright © 2004-2008 SewiG All rights reserved.