web-dev-qa-db-ja.com

<my reference>を含む囲みインスタンスが必要です

を含む囲みインスタンスが必要です

以下はコードです。 positionObjは使用しようとしているオブジェクトであり、上記のエラーが表示されます。

理由は不明です。

package toolBox;
import toolBox.Secretary.positionObj;    

public class PositionManagement {
    public static HashMap<String, Secretary.positionObj> main(String vArg){
        positionObj newPosition=new positionObj();
    }
}
83
jason m

静的な内部positionObjクラスを、Secretaryのインスタンスなしで使用しようとしています。
非静的内部クラスは、その親クラスのインスタンスに属している必要があります

おそらく、positionObjを通常のクラスまたは静的な内部クラスに変更する必要があります。

または、someSecretary.new positionObj()を記述して、someSecretaryインスタンスに属する内部クラスのインスタンスを作成できます。

121
SLaks

まず、Outerクラスのオブジェクトを作成します。この場合、私は「秘書」と思います。次に、positionObjを作成します。このような、

Secretary x = new Secretary();
Secretary.positionObj y = x.new positionObj();
7
Teshan

正しい一般的な署名は

public static HashMap<String, positionObj> main(String vArg)

既にインポートしているため、positionObjを修飾する必要はありません。

ただし、メインメソッドは以下の署名に準拠する必要があると確信しています。 mainをプログラムのメインメソッドにしたい場合は、署名を

 public static void main(String[] args) {...}

mapを返す別の静的メソッドを作成し、mainから呼び出すことができます。

注として、すべてのクラスは大文字で始まる必要があり、positionObjはPositionObjである必要があります。

0
hvgotcodes