背景
https://blog.jetbrains.com/kotlin/2017/04/kotlin-1-1-2-is-out/
っていうニュースを見て、以前参画していた現場のリードエンジニアに教えてもらったKotlinのvalは、Javaでいうところの Immutable object だよっていう話を思い出しました。
その際に、JavaとKotlinのImmutable / Mutable / Const / Variable
それぞれの分類について教えていただいたのですが、ニュース見るまで忘れちゃっていたっていましたw
そこで、思い出したことが、ホットなうちに記憶ではなく、記録にしておかないと、また、ゴールデンウィークで完全に忘れてしまいそうなので、JavaとKotlinのImmutable / Mutable / Const / Variable
それぞれの分類いついて、書き留めておきます。
だいぶ前の記憶なので、間違っているところがあるかもしれないので、気がついたら指摘もらえると幸いです。
Kotlin の Immutable / Mutable / Const / Variable の 分類
- Const ........... companiaon object { const val }
- Variable
- Immutable ..... val
- Mutable ....... var
となります。
ただし、Kotlin の言語仕様としては、
- Variable
- Immutable ..... val
- Const ....... companiaon object { const val }
- Mutable ....... var
が、正しいものとなります。
ちなみに、Kotlin の 定数の表現方法
companion object {
const val HOGE = "hoge"
}
というふうに書きます。
Java の Immutable / Mutable / Const / Variable の 分類
言語使用としての分類は
- Variable
- Immutable ..... final
- Const ....... static final
- Mutable ....... 普通の変数
となります。
ただ、考え方としては、Kotlinと同様で、
- Const
- Variable
- Immutable
- Mutable
の分類のが正しいので、こちらを意識していったほうが良いかと思います。
この分類を日本語にすると
- 定数 ........... 常に同じ値が入る(≒ リテラルに名前つけたようなもの)
- 変数
- 不変 ......... 最初に入ったものから変化しない。最初になにが入るかは変わります。
- 可変 ......... 最初に入ったものから変化する。いつ、何回、変わるかは実装次第となります。
となります。
かなりこの分類は、わかりやすいし、覚えやすいと個人的に思っています。
おわりに
正直、これを教わるまで、Immutable
については、用語は聞いたことあるけど使わないでしょ。っていう感じで、Const / Variable
の2種類しか意識していませんでした。
こういった分類って参考書とかにも乗っていない(乗っていたらすいません。)ことなので、非常に為になりました。
正しい言語使用を教えてもらったのに、忘れていたってことは、まだまだ身についていない証拠ですねw
気をつけます^ ^