1

私はJavaが初めてです。「非静的変数は静的コンテキストから参照できません
」というエラーメッセージが表示されます。 ここSOでいくつかの回答を読みましたが、私の問題に解決策を適応させることができませんでした。

これはコードです:

package test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class test{

public class Pass {    
    private int identity;
    private ArrayList<Date> logged_in;
    private ArrayList<Date> logged_out;
    public Pass(int identity){ 
        this.identity = identity;
        this.logged_in = new ArrayList<Date>();
        this.logged_out = new ArrayList<Date>();
    }    
}


public class Officer {    
    private Pass pass;
    public Officer(Pass pass){ this.pass = pass; }    
}    

public static void main(String[] args) throws ParseException {  
    Officer officer1 = new Officer(new Pass(1111));// PROBLEM IN THIS LINE 
}
}

よろしくお願いします。

4

2 に答える 2

7

オフィサー クラスとパス クラスを「テスト」クラスの外に配置して、「テスト」クラス内ではなく、「テスト」クラスと並べて配置する必要があります。

更新: 他の回答が示唆するように、ファイルごとに 1 つのパブリック クラスのみです。それを反映するようにコードを更新しました。また、クラスは通常、独自のファイルに配置され、すべてが一緒に存在するわけではありません。

package test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;


class Pass {    
    private int identity;
    private ArrayList<Date> logged_in;
    private ArrayList<Date> logged_out;
    public Pass(int identity){ 
        this.identity = identity;
        this.logged_in = new ArrayList<Date>();
        this.logged_out = new ArrayList<Date>();
    }    
}

class Officer {    
    private Pass pass;
    public Officer(Pass pass){ this.pass = pass; }    
}    

public class test{
    public static void main(String[] args) throws ParseException {  
        Officer officer1 = new Officer(new Pass(1111));// PROBLEM IN THIS LINE 
    }
}
于 2012-11-19T19:25:40.993 に答える
1

コードの唯一の問題は、内部クラスのユーザーです。あなたは初心者なので、内部クラスを掘り下げたくないと思います。

したがって、互いに独立した 3 つのクラスを定義する必要があります。

クラスパスはパブリッククラス...

クラスオフィサーはセカンドパブリッククラスです

クラス Test は、機能をテストするためのもう 1 つの public です。

それで

Pass{
}

Officer{

}

Test{

}

最初は混乱して、中括弧の中にすべてを書き込もうとします。しかし、それは常に当てはまるわけではありません。ただし、個々のファイルで 1 つのクラスを宣言することをお勧めします。だからあなたの例では...

Pass.java には Pass クラスが含まれている必要があります...

Pass {

}

Officer.java には、役員クラスが含まれている必要があります...

Officer {

}

同じことが Test クラスにも当てはまります...

それに加えて、基礎を最初に構築するのに役立つ良い本から勉強することを選択できます。

于 2012-11-19T19:37:03.767 に答える