BigDecimalも簡単に! 演算子オーバーロード

Javaで作られた業務アプリ内で演算するとき、大きい桁の数値や、演算したときの正確性などからBigDecimalを使っていたかと思います。しかし、BigDecimalでの演算はすべてメソッドで行うので直感的でなくとてもわかりにくかったです。
例えば、(1 + 10) / 2 の場合、

BigDecimal bdOne = BigDecimal.ONE;
BigDecimal bdTen = BigDecimal.TEN;

bdOne.add(bdTen).divide(BigDecimal.valueOf(2L), RoundingMode.HALF_EVEN)

のように書きました。

これにたいしてKotlinの場合

val bdOne = BigDecimal.ONE
val bdTen = BigDecimal.TEN

(bdOne + bdTen) / 2.toBigDecimal()

と非常に直感的でわかりやすいです。

Kotlin において演算子は, 演算子オーバーロードという仕組みによって決められたメソッドを呼び出すことになります。

その他の主な演算子の対応は以下のような感じです。

算術演算子

演算子命名
+plus
minus
*times
/div
%rem
++inc
dec

代入演算子

演算子命名
+=plusAssign
-=minusAssign
*=timesAssign
/=divAssign
%=remAssign

比較演算子

演算子命名
==equals
>, <compareTo
incontains
..rangeTo

シェアする

  • このエントリーをはてなブックマークに追加

フォローする