Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java
Войти
Регистрация
Восстановить пароль
 
gredwhite
42 / 42 / 11
Регистрация: 21.01.2013
Сообщений: 662
#1

Почему в конструкторе енума мы не можем обратиться к статическим полям? - Java

26.03.2014, 00:16. Просмотров 353. Ответов 4
Метки нет (Все метки)

допустим такой код.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
enum Day {
    ;
    private static String stat;
    private String nonStat;
 
    Day(String str) {
        stat = "";   //так нельзя писать
        this.nonStat = "";
    }
    public  void method(){stat = "";this.nonStat = "";}
    public  static void sMethod(){stat = "";
        this.nonStat = "";//тут очевидно
   }
 
}
не понимаю почему.

Знаю, что значения енума это внутренние статик класс для... (в нашем случае это Day). Это я так...просто для информации - может в этом причина.
http://www.cyberforum.ru/java-j2ee/thread2061635.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 00:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Почему в конструкторе енума мы не можем обратиться к статическим полям? (Java):

Инициализация вектора статическим массивом в конструкторе класса
Доброго всем времени суток!Помогите разобраться.Есть класс.Нужно вектор...

Почему мы можем убрать модуль в решении?
Дано уравнение: y = xy' Вот его решение: y*dx = x * dy (1) dx/x = dy/y (2)...

Обратиться к полям json файла
Здравствуйте! Нужно обратиться к полям файла расхоложенного на сервере Date...

Как обратиться к полям класса?
Есть класс в котором в полях заданы некоторые параметры, я создал объект (через...

Обратиться к кнопкам и полям на странице WebBrowser
подскажите пожалуйста Есть страница, на ней есть Frame В Frame есть форма...

4
verylazy
Заблокирован
26.03.2014, 11:26 #2
интересный пример, ушел читать про перечисления
а что это за точка с запятой во второй строке? если ее убрать то результат ох как меняется
0
gredwhite
42 / 42 / 11
Регистрация: 21.01.2013
Сообщений: 662
26.03.2014, 13:36  [ТС] #3
Цитата Сообщение от verylazy Посмотреть сообщение
а что это за точка с запятой во второй строке?

это отделения самих перечислений от кода.
Java
1
MONDAY, TUESDAY .....  ;
Добавлено через 1 час 42 минуты
http://stackoverflow.com/questions/4...-static-fields


вот вроде, но что-то не совсем понятно.

как разворачивается енум?

Добавлено через 1 минуту
каждое значение енума (MONDAY TUESDAY....)
это статик поле?
0
turbanoff
Эксперт Java
4008 / 3743 / 739
Регистрация: 18.05.2010
Сообщений: 9,323
Записей в блоге: 11
Завершенные тесты: 1
26.03.2014, 14:39 #4
Цитата Сообщение от gredwhite Посмотреть сообщение
как разворачивается енум?
Вот - http://www.benf.org/other/cfr/how-are-enums-implemented.html
0
gredwhite
42 / 42 / 11
Регистрация: 21.01.2013
Сообщений: 662
26.03.2014, 14:40  [ТС] #5
Понял!!!

каждый MONDAY TUESDAY... это static field и ещё это экземпляр обрамляющего енума.

каждый MONDAY TUESDAY... инициализируется сразу. то бишь вызывает конструктор

Есть правило, что все MONDAY TUESDAY... пишутся в начала енума

Статик поля инициализируются в порядке того как встретятся в коде

Собсно из вышесказанного получается, что если разрешить доступ из конструктора к статик полям, то они не будут инициализированы. Точнее будут, но дефолтными значениями(0 null ...), но это заведомо не верно.

Я даже сам понял.
1
26.03.2014, 14:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2014, 14:40
Привет! Вот еще темы с решениями:

Как в цикле обратиться к определенным полям в отчете?
К примеру, имеем отчет со 100 полями, которым присваиваем значения при открытии...

Обратиться к полям текущего класса из методов другого
Создать два класса - в первом объявить несколько полей в private секции....

Почему при обращении по индексу к массиву с модификатором readonly мы можем записывать значение
Народ объясните новичку почему при обращении по индексу к массиву с...

Как обратиться ко всем текстовым полям формы одновременно?
Есть кнопка CLEAR для очистки всех текстовых полей. Как их все обнулить? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru