NullPointerException
не имеет ничего общего с видимостью.Вы, вероятно, вызываете метод getParameter
для нулевого объекта.Ваша переменная agent
объявлена, но не инициализирована.Вы можете закодировать что-то вроде:
private Agent agent;
private Thread controller = new Thread() {
agent = new Agent();
// ...
agent.getParameter(); // should not throw a NullPointerException
}
ОБНОВЛЕНИЕ ПОСЛЕ КОДА БЫЛО ДОБАВЛЕНО
Ваш код имеет два определения agent
.Первый в классе:
private Agent agent;
А второй внутри вашего run()
метода:
Agent agent = new Agent();
Ваш getParameter()
метод не знает agent
, определенный внутриметод run()
.Он знает только член agent
класса, который не был инициализирован.Ваша проблема будет решена, если вы удалите второе определение agent
:
public void run() {
...
// Agent agent = new Agent();
agent = new Agent(); // works fine: you are initiliazing the class member
...
parameter = getParameter();
}
OLD UPDATE : NullPointerException
выбрасывается в методе getParameter()
.Поэтому я понимаю, что ваш код выглядит следующим образом:
private Something getParameter() {
agent.someMethod(); // exception thrown here
}
Если это ваш код, проблема остается той же: agent
не инициализирован.Вы должны инициализировать его перед вызовом любого из его методов внутри метода getParameter()
.