2012-09-10 14 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 
     } 
    } 


} 

は、今私は this.p=pと外部クラスのインスタンス変数pを初期化傾けます。再び私はできません Problem.p=p;それはエラーを取得します。 どうすれば、内側のクラスメソッド setP(int p)の引き数を と同じ名前のpに保ちながら、外側のpを割り当てることができますか?

+0

のような外部クラスへのpをREFEREするもこれをチェックanswer 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

使用

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されるべきではありません。私は質問者のサポートu。 –

関連する問題