0

私は3つのクラスを持っています: -

Tell - メイン プログラム
Item - 個々の電話帳アイテム
Directory - すべてのアイテムを格納するディレクトリ オブジェクト。


私がやろうとしているのは、アイテムクラスのオブジェクトを格納するディレクトリ内に配列リストを作成することです。これが私がやっている方法です。

Tell から、次のようにメソッドを呼び出しています: -

Directory.add(name, telNo);

ディレクトリ クラス: -

public class Directory
{
    ArrayList<Entry> entries = new ArrayList<Entry>();
    // Add an entry to theDirectory
    public static void add(String name, String telNo)      
    {
         entries.add(new Entry(name, telNo));
    }
}

エントリークラス: -

public class Entry
{
    String name;
    String telNo;
    public TelEntry(String aName, String aTelNo )
    {
        setNumber(aTelNo);
        setName(aName);
    }

    private void setNumber(String aTelNo)
    {
        telNo = aTelNo;
    }
    private void setName(String aName)
    {
        name = aName;
    }

}

しかし、私のプログラムはコンパイルされず、次のエラーが表示されます: -

"non-static variable entries cannot be referenced from a static context" 

誰かが私が間違っていることを説明できますか?

4

2 に答える 2

2

ArrayList を静的コンテキスト(メソッド) から使用しているため、クラスでArrayListを static として宣言する必要があります。また、フィールドをプライベートにする必要があるため、それを作成し、それにアクセスするためのアクセサ メソッドを提供することもできます。Directoryaddprivatepublic

private static ArrayList<Entry> entries = new ArrayList<Entry>();

静的コンテキストからのみ静的変数にアクセスできます。非静的変数を使用するにはクラスのインスタンスが必要であり、静的コンテキストで使用できるインスタンスがないため、それらを使用することはできません。

于 2012-10-27T13:19:56.483 に答える
2

宣言しますentries static。静的コンテキスト内の静的変数のみにアクセスできます。

static ArrayList<Entry> entries = new ArrayList<Entry>();
于 2012-10-27T13:20:08.653 に答える