#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
, вы просто не сможете изменить его значение.