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


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

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

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

package toolBox;
import toolBox.Secretary.positionObj;    

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

3 ответа:

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

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

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

сначала создайте объект внешнего класса. В данном случае я думаю "секретарь". Затем создайте positionObj. Вот так,

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

правильная общая подпись будет

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

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

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

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

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

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