うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

Javaのプリミティブについてのある側面

TwitterJavaのプリミティブが流行っていたのでちょっとだけ。
Javaのプリミティブはあんまりいいイメージがないことが多いですね。Effective JavaなんかでもBigDecimal使いましょうってあった気がします。
全ての型がオブジェクトであるような言語とかもあるので、Javaのプリミティブと参照型というのは結構矛盾をはらんでいるとか思われる場面もありますね。


僕自身はだいたい参照型で済ませることが多いのですが、たまに「あぁー全てをプリミティブで済ませられるような技術力がほしいなー」って思うときがあります。
Javaのプリミティブの一つのメリットはnullを許容しない点」です。
参照型でやっているとどうしてもnullに対する何かを書いたりしなければならない場面が多くなるのですが、プリミティブはnullを使った時点(intを返すメソッドではreturn nullと出来ないなど)でコンパイルエラーになるので参照型より少し面倒がへります。


Javaenumが本当に素晴らしいのにnullを許容してしまっているのはenumはプリミティブな何かではなくstatic な sub classのシンタックスシュガーでしかなくてenumはただの参照型だからなんですよね。


そのためにNull ObjectパターンだったりOptionだったりがあると思うのですが、まぁそれは別の話で。


と、まぁnullは存在しないと困る概念なのですが、それをいかにらくに書けるかっていうのをJavaでこねくりまわそうとしたときにプリミティブで済ませられるなら楽だと思う場面はときどきあります。


ただプリミティブにしていてもそれをメンテしていったり仕様が変わって行くのを繰り返して行くと最終的に便利な参照型がいいじゃん。ってなることが多いのも事実だと思います。