2017-02-28 25 views
-3

メインクラスのインスタンスを作成し、非静的メソッドからメソッドを実行しようとしましたが、私はまだ非静的メソッドを取得し続けます静的コンテキストから参照できません "というエラーが表示されます。静的でない非静的メソッドは動作していますか?

メインクラスは次のようになります。

public class WeatherController { 
    public static void main(String[] args) { 
     WeatherController mainController = new WeatherController(); 
     mainController.doStuff(); 
    } 

    public void doStuff() { 
     WeatherObservation newObservation = new WeatherObservation("Whyalla", "28-02-17", 38, 0, 1.3, 1); 
     WeatherObservation.printObservation(newObservation); 
     WeatherHistory newHistory = new WeatherHistory(); //Create new History Array 
     newHistory.arrayAdd(newObservation);    //Add the Observation to it. 

// These are the problem methods: 
     WeatherHistory.arrayPrint(newHistory); 
     WeatherObservation.setTemp(10); 
    } 
} // End Class 

doStuffはmainControllerのインスタンスで実行しているので、非静的である必要があります。しかし、setTempやarrayPrintを呼び出すことはできません。

+3

をあなたは 'のインスタンスを持っているからといってWeatherController'はあなたがWeatherHistory'または'のインスタンスメソッドを呼び出すことができるという意味ではありません 'WeatherObservation 'これらのクラスのインスタンスなしで。 – shmosel

答えて

3
WeatherHistory.arrayPrint(newHistory); 
WeatherObservation.setTemp(10); 

これらは、以下のコードに置き換えて、静的呼び出しです:

newHistory.arrayPrint(newHistory); 
newObservation.setTemp(10); 
+1

あるいは、 'WeatherObservation.printObservation()'がおそらく静的になるようにしてください。 'newHistory.arrayPrint(newHistory)'よりも役に立つと思われます。 – shmosel

+0

それはそれをした、と私はなぜ、感謝を見ると思う。 – DataThrust

関連する問題