您的位置:首页 > 编程语言 > Java开发

局部内部类访问的局部变量不必用final修饰,java8中

2016-08-13 21:08 351 查看
java8中,局部内部类访问的局部变量不必用final修饰,这一点和Java7是不一样的。

下面这段代码在Java8中是正确的:

public class LocalInnerClassTest {

public static void main(String[] args) {
LocalInnerClassTest.echo("I like ...");
}

public static void echo(String wordYouSay) {
class Person {
public void say() {
System.out.println(wordYouSay);
}
}
Person person = new Person();
person.say();
}

}


然而,在Java7中,这段代码不能通过编译,会报如下错误:

Cannot refer to a non-final variable wordYouSay inside an inner class defined in a different method

这算是Java8(编译器)提供的一项改进吧。想想,总是要无缘无故给传给局部内部类的局部变量添加一个final修饰,也确实有点儿恼人,这点儿改进多少让人省点心(语法糖的妙处)。

转载自:http://blog.csdn.net/l294265421/article/details/50448339
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java
相关文章推荐