web-dev-qa-db-fra.com

Une instance englobante contenant <ma référence> est requise.

Une instance englobante qui contient est requise

Ci-dessous le code. positionObj est l'objet que j'essaie d'utiliser et me donne l'erreur ci-dessus.

On ne sait pas pourquoi.

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

Vous essayez d'utiliser la classe positionObj intérieure non statique sans une instance de Secretary à laquelle elle appartient.
Une classe interne non statique doit appartenir à une instance de sa classe parente

Vous devriez probablement changer positionObj en une classe normale ou une classe interne statique.

Vous pouvez également écrire someSecretary.new positionObj() pour créer une instance de la classe interne appartenant à l'instance someSecretary.

121
SLaks

Commencez par créer un objet de la classe Outer. Dans ce cas, je pense "secrétaire". Ensuite, créez positionObj. Comme ça,

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

La signature générique correcte serait

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

vous n'avez pas besoin de qualifier positionObj puisque vous l'importez déjà.

Cependant, je suis à peu près sûr qu'une méthode principale doit être conforme à la signature ci-dessous. Si vous souhaitez que main soit la méthode principale de votre programme, remplacez la signature par

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

vous pouvez créer une méthode statique distincte qui renvoie une carte et l'appelle depuis main.

Notez que toutes les classes doivent commencer par une lettre majuscule, positionObj, devrait être PositionObj.

0
hvgotcodes