0

Дорого вам вечера товарищи! Сел изучать Java, столкнулся с проблемой "The field cnt cannot be declared static in a non-static inner type, unless initialized with a constant expression" указывает на строку public static int cnt = 0;

Вот код :

public class sc1 {
    public static void main(String[] args) {
        class ObjectInTheWorld {
            int id;
            int xpos, ypos, zpos;
            String title;
            //
            public static int cnt       =   0;
            //
            public ObjectInTheWorld() {
                cnt++;
                //
                id                      =   cnt;
            }
        }
        //
        ObjectInTheWorld Sun            =   new ObjectInTheWorld();
        //
        Sun.xpos                        =   10;
        Sun.ypos                        =   15;
        Sun.zpos                        =   20000;
        Sun.title                       =   "The sun";
        //
        System.out.print(Sun.id + " " + Sun.xpos + " " + Sun.ypos + " " + Sun.zpos + " " + Sun.title + "\n");
        //
        class Human extends ObjectInTheWorld {
            String name;
            String sex;
        }
        //
        Human me                        =   new Human();
        //
        me.xpos                         =   1;
        me.ypos                         =   2;
        me.zpos                         =   4;
        me.title                        =   "Human";
        me.name                         =   "Andrey";
        me.sex                          =   "Male";
        //
        System.out.print(me.xpos + " " + me.ypos + " " + me.zpos + " " + me.title + " " + me.name + " " + me.sex);
        //
    }
}

Прошу сильно не ругать, всё таки несколько часов назад начал читать и экспериментировать, задача была создать счётчик кол-ва экземпляров класса. Что я не так сделал?

В качестве среды разработки использую Eclipse.

1
  • Переделайте свой комментарий в ответ, помечу полезным и закрою вопрос. 16 окт 2012 в 14:32

1 ответ 1

1

Вынесите ObjectInTheWorld в отдельный .java файл и гуглите на тему java nested & inner classes.

3
  • Хорошо, а так нельзя оставить? Мне так не очень удобно раскидывать по нескольким файлам, по крайней мере для экспериментов. 16 окт 2012 в 14:26
  • 1
    @Андрей Аршинов Поэтому я и сообщил вам правильный запрос в гугл - вы написали код, который, скорее всего, работает не так, как вы думаете, поскольку вы хотели создать top-level класс, а создали inner класс в методе. 16 окт 2012 в 14:29
  • Спасибо, теперь всё работает, понял разницу) 16 окт 2012 в 14:32

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.