黑马程序员技术交流社区

标题: 匿名内部类访问成员变量的问题 [打印本页]

作者: fightingwang    时间: 2015-1-30 23:15
标题: 匿名内部类访问成员变量的问题
interface A
{
        void test();
}
public class Atest
{
        public static void main(String[] args)
        {
                int age = 11;
                A a = new A()
                {
                        
                        public void test()
                        {
                                System.out.println(age);
                        }
                };
                a.test();
        }
}
代码如上,匿名内部类访问外部类的成员变量的时候不是要用final修饰吗,怎么我的没用final修饰,编译的时候也不报错
作者: d342784178    时间: 2015-1-31 09:52
运行有问题吗 应该是因为age是局部变量的关系吧
作者: 流行VS泪痕    时间: 2015-1-31 10:37
好像有错误吧?看看下面的代码interface A
{
        void test();
}
abstract class Atest implements A
{
        public static void main(String[] args)
        {
                final int age = 11;
                Atest a = new Atest()
                {

                        public void test()
                        {
                                System.out.println(age);
                        }
                };
                a.test();
        }
}



作者: fightingwang    时间: 2015-1-31 11:02
流行VS泪痕 发表于 2015-1-31 10:37
好像有错误吧?看看下面的代码interface A
{
        void test();

嗯啊,可能是编译器的问题,我换了个编译工具确实报错了
作者: fightingwang    时间: 2015-1-31 11:03
d342784178 发表于 2015-1-31 09:52
运行有问题吗 应该是因为age是局部变量的关系吧

局部变量在匿名内部类调用时也得定义成final
作者: wf111sxwf    时间: 2015-2-2 10:25
你的是JDK1.8吧  1.8默认给你加final的  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2