包含的匿名内部类使用的函数的参数由“final”修改。但为什么?

时间:2014-03-16 08:39:59

标签: java anonymous-class

public Destination destination(final String dest, final float price) {
    return new Destination() {
        private int cost;
        {
            cost = Math.round(price);
            if (cost > 100)
                System.out.prinltn("Over budget!");
        }
        private String label = dest;
        public String readLabel() { return label; }
    };
}

包含的匿名内部类使用的参数由“final”修改。但为什么?

1 个答案:

答案 0 :(得分:1)

关于规则适用于内部类 (JLS 8.1.3)

  

使用但未在内部类中声明的任何局部变量,形式方法参数或异常处理程序参数必须声明为最终。   任何在内部类中使用但未声明的局部变量必须在内部类的主体之前明确赋值

了解更多here