お世話になります。
次のようなプログラムをEclipseで編集していたのですが、
JavaSE-1.8の環境では何もエラーが出なかったので気付かなかったのですが、
JavaSE-1.7以下の環境に持っていくと
「異なるメソッドで定義されたインナー・クラス内で非final変数listを参照できません」
というエラーが表示されました。
原因はList<Integer>の宣言位置を間違えていたということで解決したのですが、
Java-SE1.8でエラーが出ないのが気になります。
Javaのバージョンが1.8になって仕様が変わったのでしょうか?
プログラムは以下のとおりです(再現プログラムなので簡略化しています)。
lang
1import java.util.ArrayList; 2import java.util.List; 3 4public class Test { 5 6 Test() { 7 List<Integer> list = new ArrayList<Integer>(); 8 9 new Interface() { 10 @Override 11 public void function(int x) { 12 list.add(x); 13 } 14 }; 15 16 } 17 18 public static void main(String[] args) { 19 Test t = new Test(); 20 } 21} 22 23interface Interface { 24 void function(int x); 25}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/14 10:25