asdasd12356 2023-04-20 19:36 采纳率: 64.3%
浏览 21
已结题

局部变量和局部内部类的变量重名时,怎么在内部类中获取局部变量


class Outer {
    int i = 1;

    public void x() {
        int i = 10;
        class Inner {
            private int i = 2;

            public void x() {
                System.out.println(i);//内部类的i
                System.out.println(Outer.this.i);//外部类的i
                System.out.println("??");//怎么访问局部变量的i ?
            }
        }
        Inner inner = new Inner();
        inner.x();
    }
}

public class Main {
    public static void main(String[] args) {
        Outer o = new Outer();
        o.x();
    }
}

局部变量int i=10;如何在内部类中访问

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-04-20 20:06
    关注

    基于Monster 组和GPT的调写:

    • 用关键字this来引用外部类的成员变量,final关键字修饰局部变量来让内部类可以访问。

    • 内部类中用Outer.this.i来访问外部类的成员变量,用final int j = i;来创建一个常量,然后在内部类中用j来访问局部变量。

    修改后的代码如下:

    class Outer {
        int i = 1;
    
        public void x() {
            int i = 10;
            final int j = i;
            class Inner {
                private int i = 2;
    
                public void x() {
                    System.out.println(i);//内部类的i
                    System.out.println(Outer.this.i);//外部类的i
                    System.out.println(j);//局部变量的i
                }
            }
            Inner inner = new Inner();
            inner.x();
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Outer o = new Outer();
            o.x();
        }
    }
    
    
    

    输出结果为:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 创建了问题 4月20日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效