匿名クラスを使ってDtoを初期化してみる

Javaの匿名クラスを使ってかっこよくオブジェクトを初期化するテクニック - 矢野勉のはてな日記
さっそく仕事で使えそうなので試して見た。


今まで

HogeDto hoge = new HogeDto();
hoge.setHogeId(1);
hoge.setHogeName("hogehoge");
hoge.setNote("note");
hoge.setDisplayOrder(99);

と書いていたものを例にならってこんな風に書き換えてみる

HogeDto hoge = new HogeDto(){{
	setHogeId(1);
	setHogeName("hogehoge");
	setNote("note");
	setDisplayOrder(99);
}};


が、 HogeDtoがSerializableインターフェースをimplementsしていたために
シリアライズ可能クラス HogeDtoはlong型のstatic final serialVersionUIDフィールドを宣言していません。」
なんて警告されてしまうので、serialVersionUIDを追加。


元のHogeDtoでserialVersionUIDがpublicで定義されていればこんな風に書けなくはないが、なんか微妙。というか元々publicなら定義し直さなきゃいけないのはSerializeのためのルールだから仕方ないんだろうなぁ(・〜・)

HogeDto hoge = new HogeDto(){
	private static final long serialVersionUID = HogeDto.serialVersionUID;
	{
		setHogeId(1);
		setHogeName("hogehoge");
		setNote("note");
		setDisplayOrder(99);
	}
};