Необходим доступ к полю, присутствующему в закрытом внутреннем классе - PullRequest
0 голосов
/ 08 апреля 2020
class OuterClass {
    // The below object will be initiated somewhere within
    private OuterClass.InnerClass innerClassObj;
    private class InnerClass {
        {
            int innerClassVariable;
        }
    }
}

class SomeOtherClass {
     public static void main(String args[])
     {
         OuterClass outerClassObj = new OuterClass();
     }
}

Мне нужно получить доступ к полю «innerClassvariable», присутствующему в «InnerClass», используя «innerClassObj», присутствующее в «OuterClass» из «SomeOtherClass»

1 Ответ

0 голосов
/ 08 апреля 2020

Вы скопировали innerClassVariable с областью видимости блока, она не будет видна за пределами InnerClass. Это как если бы вы создали локальную переменную внутри метода ...

  1. Удалите скобки (scope).
  2. Создайте новый экземпляр InnerClass внутри OuterClass
  3. Создать способ доступа к переменной внутреннего класса
class OuterClass {
    private OuterClass.InnerClass innerClassObj;

    private class InnerClass {
        //{
            protected int innerClassVariable = 1; // Set to something...
        //}
    }

    public OuterClass() {
        this.innerClassObj = new InnerClass(); // Instantiate...
    }

    public int getInnerClassVariable() {
        return innerClassObj.innerClassVariable; // Have a way to access the value...
    }
}

class SomeOtherClass {
    public static void main(String args[]) {
        OuterClass outerClassObj = new OuterClass();
        int value = outerClassObj.getInnerClassVariable();

        System.out.println(value); // 1
    }
}
...