2017-05-18 9 views
0

mainメソッドの外部でmainメソッド内で作成されたオブジェクトを参照するにはどうすればよいですか?以下の例があります。他のすべてのコードが正しいとみなして、Appleクラスが完成したとしましょう。私はちょうどそれが外部で作成されたときにメインメソッドでapple1を参照できるようにする方法を知りたいです。私は "静的コンテキストから非静的変数を参照することはできません"と理解しています。Java - mainメソッドの外で作成されたオブジェクトの使い方

回避策はありますか?

public class Fruits { 

    private Apple apple1 = new Apple(); 

    public static void main(String[] args) { 

     System.out.println("The colour of the apple is "apple1.getColour()); 

    } 
} 

うまくいけば、この質問は誰かにとって意味があると思います。前もって感謝します。

編集:私はapple1を静的に変更したくありません。

+0

フルーツのインスタンスが必要です(クラスの外にある場合はゲッター) –

+1

Javaテキストまたはチュートリアルのオブジェクト指向セクションを読む –

答えて

2

apple1staticにはmainでアクセスしてください。

private static Apple apple1 = new Apple(); 

またはFruitsオブジェクトを作成し、それを介してアクセスします。

1

apple1のインスタンス変数(別名「インスタンスフィールド」)です。 Fruitsのインスタンスを作成しない限り、/は存在しません。 new経由。 mainクラスメソッドであり、インスタンスメソッドではないため、自動的に動作するインスタンスはありません。

だからあなたが行うことができます:

Fruits f = new Fruits(); 
System.out.println(f.apple1.getColour()); 

を... mainでそれにアクセスします。

代替、それはそれだstatic作るクラス変数(または "クラスフィールド")、Chandler notesとして:

private static Apple apple1 = new Apple(); 

そして、それはmainのようにクラスメソッドからアクセス可能です:

System.out.println(apple1.getColour()); 
// or 
System.out.println(Fruits.apple1.getColour()); 
+1

これは本当に役に立ちました。人々は質問に答えているかもしれませんが、彼らは冗談のように答えなければなりません。あなたのものはだった。ありがとう! – Jamie

関連する問題