Требуется закрытый экземпляр, содержащий <мою ссылку>

Требуется прилагаемый экземпляр, который содержит

Ниже приведен код. positionObj - это объект, который я пытаюсь использовать, и он дает мне вышеуказанную ошибку.

Непонятно, почему.

package toolBox;
import toolBox.Secretary.positionObj;    

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

Ответ 1

Вы пытаетесь использовать нестатический внутренний класс positionObj без экземпляра Secretary, к которому он принадлежит.
Нестатический внутренний класс должен принадлежать экземпляру его родительского класса

Вероятно, вы должны изменить positionObj на обычный класс или статический внутренний класс.

В качестве альтернативы вы можете написать someSecretary.new positionObj(), чтобы создать экземпляр внутреннего класса, принадлежащего экземпляру someSecretary.

Ответ 2

Сначала создайте объект класса Outer. В этом случае я думаю "секретарь". Затем создайте positionObj. Как это,

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

Ответ 3

Правильной общей сигнатурой будет

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

вам не нужно квалифицировать positionObj, поскольку вы уже импортируете его.

Однако, я уверен, что основной метод должен соответствовать подписи ниже. Если вы хотите, чтобы основной был основным методом для вашей программы, измените подпись на

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

вы можете создать отдельный статический метод, который возвращает Map и вызывается из main.

В качестве примечания, все классы должны начинаться с заглавной буквы, positionObj, должен быть PositionObj.