黑马程序员技术交流社区

标题: 内部类如何访问外部类中的局部变量 [打印本页]

作者: 姿_`态    时间: 2014-6-15 17:30
标题: 内部类如何访问外部类中的局部变量
interface Inter
{
        public static final int x=4;
        void method();
}
class Test
{
        int x=3;
    Inter function()
        {
                 int x=5;//就是访问这个外部类的局部变量

         return new Inter()
                 
         {
                 public void method()
                {
                        System.out.println("Inner method"+Test.this.x);
                        System.out.println("Inner method"+this.x);
                        }
         };
        }

}


class InnerClassTest
{
        public static void main(String[] args)
        {
                new Test().function().method();
        }
         
}

作者: 黄梁梦想享    时间: 2014-6-15 18:07
知道告诉我一些
作者: GoodBoy123    时间: 2014-6-15 18:21
你这是匿名内部类,我看了一个也不知道要怎么访问.
作者: crazystraw    时间: 2014-6-15 18:39
同求高手解答,想半天没想出方法
作者: 姿_`态    时间: 2014-6-16 17:20
有没有高手啊,帮帮小弟吧
作者: TS__likewise    时间: 2014-6-16 18:31
不明白楼主的意思,,,不过你多了个冒号有错
作者: 姿_`态    时间: 2014-6-16 19:48
TS__likewise 发表于 2014-6-16 18:31
不明白楼主的意思,,,不过你多了个冒号有错

那里多一个冒号
作者: 墓____夜    时间: 2014-6-17 09:24
interface Inter
{
       // public static final int x=4;             //x被final修饰  不可被改变
        void method();
}
class T
{
        int x=3;
    Inter function()
        {
                final int x=5;//就是访问这个外部类的局部变量                        x要被final修饰

        return new Inter()       
                 
         {
                 public void method()
                {
                        System.out.println("Inner method"+T.this.x);
                      //  System.out.println("Inner method"+this.x);  这个x是访问结构中的常量x
                        System.out.println("Inner method "+ x);  //这个x是访问内部类外边的变量x  同时 x要被final修饰,增加x生命周期
                        
                        }
         };
        }

}


public class InnerClassTest
{
        public static void main(String[] args)
        {
                new T().function().method();
        }
         
}
我自己写的 你看看。
作者: 姿_`态    时间: 2014-6-17 11:44
墓____夜 发表于 2014-6-17 09:24
interface Inter
{
       // public static final int x=4;             //x被final修饰  不可被改变

我的问题你没有给我解决啊,我要访问的是外部类的局部变量5,还有5不需要被final
修饰,这是jdk8的新特性
作者: TS__likewise    时间: 2014-6-17 16:32
倒数第7个大括号
作者: 姿_`态    时间: 2014-6-17 18:17
TS__likewise 发表于 2014-6-17 16:32
倒数第7个大括号

这是内部类好吧




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