LoginSignup
4
5

More than 5 years have passed since last update.

JavaとKotlin の Immutable / Mutable / Const / Variable の分類、考え方について。

Last updated at Posted at 2017-04-27

背景

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
気をつけます^ ^

4
5
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5