【Java】switch構文で”重複ローカル変数”の警告が出た
以下のようにswitchのcase文の中でローカル変数を定義したときのことです。
switch (dog) { case SHIBA: String name = "柴太郎"; break; case MAME_SHIBA: String name = "豆太郎"; // "重複ローカル変数"の警告 break; default: break; }
switch構文内で2回目に出現したString name
において、"重複ローカル変数"の警告が出現しました。どうやらswitch構文内は同一スコープなのでローカル変数は使いまわせるよ、ということみたいです。
したがって、
switch (dog) { case SHIBA: String name = "柴太郎"; break; case MAME_SHIBA: name = "豆太郎"; break; default: break; }
このように同一の変数定義をしないようにするか、それがわかりにくければ
switch (dog) { case SHIBA: { String name = "柴太郎"; break; } case MAME_SHIBA: { String name = "豆太郎"; break; } default: break; }
波括弧{}を使用してスコープを明示して、各case内にスコープを限定してやればよいとのことでした。
お恥ずかしながら、{}でスコープが決まるということを今回初めて知りました。
確かにそうですよね~。