黑马程序员技术交流社区
标题:
内部类
[打印本页]
作者:
dengwenjing58
时间:
2015-11-28 22:49
标题:
内部类
匿名内部类中的方法是否可以调用局部变量?为什么?
作者:
袁有福123
时间:
2015-11-28 23:27
不可以
作者:
championjx
时间:
2015-11-28 23:43
可以的,匿名内部类本身就属于局部内部类,是写在方法里面的,方法里面自然就有局部变量,匿名内部类调用的局部变量要用final修饰。JDK1.8之后取消了这种机制,老师们说是BUG
作者:
Camwly
时间:
2015-11-29 13:00
应该是不能的
作者:
marcojam
时间:
2015-11-29 19:18
可以,但是要加final修饰
作者:
一路向东
时间:
2015-11-29 19:42
在Java8之前,Java要求被局部内部类、匿名内部类访问的局部变量必须使用final修饰,从Java8开始这个限制被取消了,Java8更加智能:如果局部变量被匿名内部类访问,那么该局部变量相当于自动使用final修饰。Java8将这个功能称为:“effectively final”,它的意思是对于被匿名内部类访问的局部变量,可以用final修饰,也可以不用final修饰。
作者:
一路向东
时间:
2015-11-29 19:48
完全手打例程:
interface A
{
void test();
}
public class ATest
{
public static void main(String[] args)
{
int age=8;
A a=new A()
{
public void test()
{
//在Java8以前下面语句将提示错误:age必须使用final修饰
//从Java8开始匿名内部类、局部内部类允许访问非final的局部变量
System.out.println(age);
}
};
a.test();
}
}
//
以上例程虽然没有机试编译,但是是纯手打哦!!!此历程来自《**Java讲义》P211
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2