【问题标题】:How to access shadowed Outer class variable from Inner class?如何从内部类访问阴影的外部类变量?
【发布时间】:2012-09-03 00:05:57
【问题描述】:

这不是直截了当的问题。在我的例子中,外部类变量和内部类 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,因为它表示内部类。我又不能做Problem.p=p; 它得到一个错误。 现在我如何分配外部 p,保持内部类方法 setP(int p) 的参数 同名p?

【问题讨论】:

标签: java scope


【解决方案1】:

你可以/应该这样做:

Problem.this.p

【讨论】:

    【解决方案2】:

    用于将 p 引用到外部类,如

    Problem.this.p = p;
    

    【讨论】:

      【解决方案3】:

      使用这个

      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
          }
        }
      }
      

      【讨论】:

        【解决方案4】:
        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
            }
        }
        }
        

        【讨论】:

        • 是的,你的答案不应该被否决。我提问者支持你。
        猜你喜欢
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-06
        • 1970-01-01
        • 2013-07-08
        相关资源
        最近更新 更多