(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

Autoboxingさせて!!

ということで先日、開発用EclipseたんがAutoboxingをErrorにしてくれやがるという問題に直面し、非常に悲しい思いをしたのでブログに書いておく。

Togetterにまとめたのでそちらも併せて読んでもらえれば事の成り行きが分かるかと。

事の発端


こんな感じのコードを見ていたら、なんでこんなことする必要があるの??って思うじゃないですか。
宣言されてる定数の数もそれなりに多くて、それぞれ整数値で扱った方が良い物/文字列で扱った方が良い物とあって、それを全部文字列で初期化してしまったような残念な定数クラスだったんですね。
その定数クラスから文字列と整数値のそれぞれで値を返すゲッターメソッドが用意してありますよと。。。

修正を試みる

そもそもこの定数に関して言えば、整数値として扱いたいはずなので、こんなことするならいっそ、内部に列挙型作ってやった方がいいんじゃね??ということで、少しだけ書き直しました。こんな感じ。

public static enum HogeCd{
	_00(0),
	_01(1);

	public final Integer value;

	private HogeCd(Integer value){
		this.value = value;
	}
}

Autoboxingできない!?

そしたら「_00(0)」の部分が「ボクシングされてます」ってErrorになったんですね…orz
こんなの書く為にわざわざ、

_00(Integer.valueOf(0))

とか書くのめんどくさいというか、あり得ないじゃないですか…。
でも、Ecliなんとかは頑としてこれを認めてくれなかったんです。

Ecliなんとか「オートボクシング使うなんてどうかしてるわ!!私はそんなの認めない!!」

なんでやのん…。

まぁ最終的には@さんと@さんに助けられました。