Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从内部类访问带阴影的外部类变量?_Java_Scope - Fatal编程技术网

Java 如何从内部类访问带阴影的外部类变量?

Java 如何从内部类访问带阴影的外部类变量?,java,scope,Java,Scope,这不是一个直截了当的问题。在我的例子中,外部类变量和内部类setter方法的参数名是相同的。比如: class Problem { String s; int p; class Inner { String testMethod() { return s = "Set from Inner"; } void setP(int p) { p=p; //it will

这不是一个直截了当的问题。在我的例子中,外部类变量和内部类setter方法的参数名是相同的。比如:

class Problem {
    String s;
    int p;
    class Inner {
        String testMethod() {
         return  s = "Set from Inner";
        }
        void setP(int p)
        {
            p=p;  //it will do self assignment
        }
    }


}
现在我不能用this.p=p初始化外部类实例变量p,因为它指示内部类。同样,我不能做
问题它得到一个错误。
现在我如何分配外部p,保持内部类方法setP(int p)
的参数不变
同名p?

您可以/应该这样做:

Problem.this.p

用于引用外部类,如

Problem.this.p = p;
用这个

class Problem {
String s;
int p;
class Inner {
    String testMethod() {
     return  s = "Set from Inner";
    }
    void setP(int p)
    {
        Problem.this.p=p;  //it will do assignment
    }
  }
}

是的,你的答案不应该被否决。我是提问者支持你。也请检查这个答案@Nandkumar,我刚刚看到,很好的解释:)
class Problem {
String s;
int p;
class Inner {
    String testMethod() {
     return  s = "Set from Inner";
    }
    void setP(int p)
    {
        Problem.this.p=p;  //it will do assignment to p of outer class
    }
}
}