2014-03-03 139 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); 
       } 
      } 
     } 
    ); 
} 
相关问题