Md. Arafat Al Mahmud
Md. Arafat Al Mahmud

Reputation: 3214

How to access shadowed Outer class variable from Inner class?

This is not straight forward question. In my case the outer class variable and the inner class setter method's argument name is same. like:

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


}

now I cant initialize outer class instance variable p with this.p=p as it indicates the inner class. again I cannot do Problem.p=p; it gets an error. Now how can I assign outer p, keeping the inner Class method setP(int p)'s argument the same name p ?

Upvotes: 9

Views: 2471

Answers (3)

Hemant Metalia
Hemant Metalia

Reputation: 30678

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

Upvotes: 0

Nandkumar Tekale
Nandkumar Tekale

Reputation: 16158

Use to refere p to Outer class like

Problem.this.p = p;

Upvotes: 1

yegor256
yegor256

Reputation: 105173

This is how you can/should do it:

Problem.this.p

Upvotes: 11

Related Questions