2016-11-20 1 views
0

Я новичок в Java, и не совсем понятно, почему следующий код не работает должным образом:ява переменная атрибуции внутри метода класса сферы не работает

public class Manager 
{ 
    public String ip; 
    public static String port = "32150"; 

    public Car car; 
    private SNMPMessenger snmpMessenger; 

    public SNMPManager(String ip) { 
     this.ip = ip; 

     car = new Car(); 
     snmpMessenger = new SNMPMessenger(ip, port); 
    } 

    public void updateVehicleChassis() { 
     snmpMessenger.sendGetRequest(new OID(new int[] {1,3,6,1,4,1,12619,1,1,1,0}), new SNMPResponseListener() { 
      public void onSNMPResponseReceived(Vector<? extends VariableBinding> variableBinding) { 
       car.chassis = variableBinding.get(0).toValueString(); 
       System.out.println("inside: " + car.chassis); //HERE I HAVE THE PROPER VALUE 
      } 
     }); 
     System.out.println("outside: " + car.chassis); //HERE I HAVE NULL 
    } 
} 

Класс автомобиля:

public class Car { 
    public String chassis; 
    public String model; 

    public Car() 
    { 

    } 
} 

Я в основном хочу присвоить переменной variableBinding.get (0) .toValueString() моей переменной car.chassis, но я не понимаю, почему она работает только в области методов onSNMPResponseReceived. Любые идеи?

Заранее благодарен!

+0

_ «атрибут' variableBinding.get (0) .toValueString() 'в моей car.chassis переменной» _ не является содержательным заявлением. Что вы подразумеваете под словом «атрибут»? Вы имеете в виду «назначить»? Кроме того, обновите сообщение, чтобы включить класс «Car». –

+1

* «Я не понимаю, почему он работает только внутри области« onSNMPResponseReceived »», где это должно быть и почему? –

+0

yes @JimGarrison –

ответ

0

Поскольку variableBinding существует только в onSNMPResponseReceived() Вы должны использовать какие-то переменные класса использовать его из-за пределов