Javaで便利な「var」を使って変数の型指定を省略(推論)する方法
  • facebookページ
  • twitterページ
  • 2021.03.19

    Javaで便利な「var」を使って変数の型指定を省略(推論)する方法

    2018年3月にリリースされたJava 10より、 varを用いた型推論によるローカル変数の宣言が可能になりました。 varの登場で変数宣言時の型が省略可能になり、Javaのコードがスッキリ書けるようになりました。

    この記事では、 varを使って型推論を行ったローカル変数の宣言方法や、 varを使用する時の注意点などについて解説していきます。

    varの基本的な使い方

    最初は、 varを用いた変数の宣言方法を見てみましょう。

    Java10以前までのJavaは、変数宣言時に次のように型を必ず指定する必要がありました。

    varを使用すると、初期値で代入される値からデータ型を推論するため、変数宣言時の方を省略できるようになりました。

    次のコードの場合、変数 strString、変数 fileFileOutputStreamとして宣言されます。

    このように、 varは初期値が明確な場合の変数を宣言する時に、型の指定を省略できます。

    初期値がない変数にvarは使えない

    先述のように、 varは初期値で代入される値から型を推論するため、次のように変数宣言時に初期値を指定していない場合は使えず、次のエラーによりビルドが通りません。

    varの注意点

    ここまで varの基本的な使い方を解説してきました。ここからは varを使う上での基本的な知識や注意点について解説していきます。

    varで宣言された変数は静的型付け

    varで宣言された変数は、静的型付けされた変数(コンパイル時にデータ型が決まる)であるため、 varで宣言した変数に、別の型の値を代入することはできません。

    実際に、 varで宣言した変数がどのように定義されているか確認してみましょう。

    このように getClass()メソッドで変数の型を調べると、宣言時に代入した初期値で変数の型が定義され、コンパイル時点で型が決まっていることが分かります。

    次のコードは、 varで宣言した変数「str」の初期値に String型の値を代入し、その後の行で int型の値を再代入しようとするコードですが、このようなコードはコンパイル時にエラーになります。

    ▪️コンパイルエラーメッセージ

    ポテパンダの一言メモ

    Javaには、どんな型の値でも入るObject型があります。Objectであれば上のコードのような Stringの値を代入した後に、 intの値を代入するといった事も問題なく可能ですが、 varはコンパイル時に初期値で代入された値でデータ型が確定するため、それ以外の型の値を後から代入することはできません。 Objectvarを混同しないように気を付けましょう。

    varをカンマで区切った複合宣言はできない

    型を指定して宣言をする変数であれば、カンマで区切って複数の変数を宣言する方法(複合宣言)が使用できます。

    しかし varを使った変数宣言では、この複合宣言は使えません。(コンパイルエラーとなる)

    数値はプリミティブ型として変数宣言される

    varを使って intlongおよび charなどの値を代入して変数を宣言すると、すべてプリミティブ型の変数として宣言されます。

    IntergerLongなどの参照型として数値型の変数を宣言したい場合は、次のように明示的に参照方のインスタンスを指定して宣言を行います。

    varの使いすぎには要注意

    varによる変数の宣言は、変数の型の指定を省略できるため便利ではありますが、あらゆる場面で varを多用すると、かえってソースコードが読みにくくなることがあります。

    varを使う事で、コードがスッキリして読みやすくなる例と、 varを使ったため逆にコードが読みづらくなる例を見ていきましょう。

    varを使うことでコードが読みやすくなる例

    変数宣言時に、右辺で代入する値のインスタンスを指定して、誰が見ても変数の型が明らかである場合は、varの使用が有効です。

    特に FileOutputStreamなどの長いクラスであれば、 varにより左辺の型の指定が省略できるため、コードもスッキリします。

    varで逆にコードが分かりづらくなる例

    varで宣言した変数の初期値が、メソッドなどの戻りである場合、戻り値の型が容易に想像できず、結果的に変数の型を調べるのに、呼び出しているメソッドの宣言まで1つ1つ確認しなかればいけないため、コードの可読性が低下します。

    実際のコード例を見てみましょう。

    ポテパンダの一言メモ

    varは、コードを組む時のタイプ量も少ないため、安易に使ってしまいがちですが、後々の保守などのことを考えて varを使う前に、コードを後からみた時に変数の型が容易に想像可能かを一度検討してから使うようにしていきましょう。

    開発プロジェクトによっては、varが使用禁止なところも

    開発プロジェクトによっては varの使用をコーディング規約という、プログラムを組む上で守るべきルールに定めているところもあります。

    Javaをはじめとする多くの言語で、 varのような型推論を行った変数宣言ができる言語が多くなったため、時代の流れに逆行している感じではありますが、開発プロジェクトでルールが定められている時は、それをしっかりと守りましょう。

    まとめ

    Java10より使えるようになった varによる型推論について解説してきました。
    varは便利な一方で、多用するとコードの可読性を悪くするため、適切な使い方で積極的に使っていきましょう。

    【関連記事】
    【必須スキル】繰り返し処理で利用するJava for文の使い方について解説!



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE