не удается получить доступ к общедоступной переменной внутреннего класса… которая унаследована от родительского

#java #scope

#java #область видимости

Вопрос:

Java Q: Я не могу получить доступ к общедоступной переменной во внутреннем классе моего родительского класса, которая называется foo. Почему? далее выполняется настройка (псевдокодированная для краткости):

 public class PageObject  
{  
    public class Button  
    {  
        public String foo ="I want this string."  //can't access....  
    }  
    ....other stuff I can access here...  
}  

public class worker
    {  
    public PageObject p = new PageObject();  
    }  

public class workerchild extends worker  
{  
    p.Buttons.    <---don't have access to Buttons public variables, only .class, etc.  
}  
  

Ответ №1:

p.Button это имя класса.
Как и любое другое имя класса, оно может использоваться только для доступа к статическим членам.

Вам нужно получить экземпляр Button класса. (например, p.new Button().foo )

Комментарии:

1. хм, я все еще получаю сообщение об ошибке, пытаясь использовать этот пример. «Не удается разрешить символьную кнопку». Строка s = (new p.Button().foo);

2. Извините; это должно быть p.new Button() .

Ответ №2:

Во-первых, ваш внутренний класс называется Button (единственное число), а не Buttons (множественное число). Во-вторых, сделайте внутренний класс статическим, а foo член постоянным, и вы сможете получить доступ к foo члену так же просто Button.foo , вы просто не сможете изменить его значение.