2012-09-10 32 views
6

这不是直接的问题。在我的情况下,外部类变量和内部类设置方法的参数名称是相同的。像:如何从Inner类访问阴影外部类变量?

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


} 

现在我不能因为它表明内部类初始化外类实例变量p与this.p=p。再次我不能这样做Problem.p=p;它会得到一个错误。 现在我该如何分配外部p,保持内部类方法setP(int p)的参数 同名p?

+0

还要检查该回答http://stackoverflow.com/questions/12139160/inner-class-access-to-outer-class-me thod-same-method-names/12139195#12139195 –

+0

@Nandkumar我刚才看到了,很好的解释:) –

回答

8

这怎么可以/应该这样做:

Problem.this.p 
+0

谢谢,它的工作原理! :) –

1

用来参考,p来的外部类像

Problem.this.p = p; 
1

使用本

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

为什么downvote?只是迟到张贴答案.... –

+0

是的,你的答案不应该downvoted。我的提问者支持你。 –