2014-03-03 89 views
-1

我試圖構建一些代碼並繼續運行到此錯誤。我試過繞過它的方法,但它隨着Journey中方法的執行而變得混亂。非靜態變量newJourney不能從靜態上下文中引用

我看了其他線程,但似乎無法找到答案。

class Main{ 
private Journey newJourney; 

public static void main(String[] args){ 
     startStation.addItemListener(
      new ItemListener(){ 
       public void itemStateChanged(ItemEvent event){ 
        if(event.getStateChange()==ItemEvent.SELECTED){ 

         String selectedItem = startStation.getSelectedItem().toString(); 
         newJourney = new Journey(); 
         newJourney.setStart(selectedItem); 


        } 
       } 
      } 
     ); 

顯然ommited一些代碼,但多數民衆贊成在主要的事情。

任何幫助表示讚賞和錯誤IM recieveing是

Main.java:102: non-static variable newJourney cannot be referenced from a static context 
         newJourney.setStart(selectedItem); 
         ^
+1

看看右邊的'Related'部分。如果這些還不夠,任何人都無法在這裏做什麼來幫助你。 –

回答

0

錯誤說明了一切。 newJourney不是靜態變量,其中main是靜態方法。這意味着main不能訪問它。這意味着下面的代碼將無法正常工作

private Journey newJourney; 

你需要

private static Journey newJourney; 
0

你應該申報的對象爲sataic一個如下:

private static Journey newJourney; 

因爲你使用這個對象在一個non-static的方式,它必須是一個static一個

0

newJourney不是靜態的,您正嘗試訪問靜態方法。

作爲Java的概念,對象的狀態不能在靜態方法內改變。

0

您可能希望採用以下範例,在該範例中爲您的靜態Main方法所在的類創建新對象,然後從該對象中完成所有工作。

class Main{ 
private static final Main me; 
private Journey newJourney; 

public static void main(String[] args){ 
    me = new Main(); 
    me.doWork(args); 
} 
private void doWork(String[] args) { 
    startStation.addItemListener(
     new ItemListener(){ 
      public void itemStateChanged(ItemEvent event){ 
       if(event.getStateChange()==ItemEvent.SELECTED){ 
        String selectedItem = startStation.getSelectedItem().toString(); 
        newJourney = new Journey(); 
        newJourney.setStart(selectedItem); 
       } 
      } 
     } 
    ); 
} 
相關問題