Форум программистов, компьютерный форум, киберфорум
Наши страницы

Java

Войти
Регистрация
Восстановить пароль
 
gredwhite
42 / 42 / 5
Регистрация: 21.01.2013
Сообщений: 634
#1

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

26.03.2014, 00:16. Просмотров 338. Ответов 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). Это я так...просто для информации - может в этом причина.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 00:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему в конструкторе енума мы не можем обратиться к статическим полям? (Java):

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

Обратиться к полям json файла - C#
Здравствуйте! Нужно обратиться к полям файла расхоложенного на сервере Date Open High Low Close Volume Adj_Close вот код. ...

Обратиться к кнопкам и полям на странице WebBrowser - Visual Basic .NET
подскажите пожалуйста Есть страница, на ней есть Frame В Frame есть форма "mainLayout" и соответственно кнопочки и т.д. ...

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

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

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

4
verylazy
Заблокирован
26.03.2014, 11:26 #2
интересный пример, ушел читать про перечисления
а что это за точка с запятой во второй строке? если ее убрать то результат ох как меняется
0
gredwhite
42 / 42 / 5
Регистрация: 21.01.2013
Сообщений: 634
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
3981 / 3716 / 462
Регистрация: 18.05.2010
Сообщений: 9,291
Записей в блоге: 11
Завершенные тесты: 1
26.03.2014, 14:39 #4
Цитата Сообщение от gredwhite Посмотреть сообщение
как разворачивается енум?
Вот - http://www.benf.org/other/cfr/how-are-enums-implemented.html
0
gredwhite
42 / 42 / 5
Регистрация: 21.01.2013
Сообщений: 634
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
Привет! Вот еще темы с ответами:

Почему символьный строковый массив мы можем передать в функцию без указания количества элементов? - C (СИ)
Почему символьный строковый массив мы можем передать в функцию без указания количества элементов?

Как обратиться ко всем текстовым полям формы одновременно? - C#
Есть кнопка CLEAR для очистки всех текстовых полей. Как их все обнулить? Програмка прилагается Спасибо using System; using...

Как обратиться к полям объединения, которое находится внутри структуры? - C++
Например, дан массив структур struct a { union b { char *c1; int c2; }; }d;

Как обратиться к полям структуры через указатель и объявление указателя на структуру - C++
Как обратиться к полям структуры через указатель и объявление указателя на структуру? #include "stdAfx.h" #include <iostream> ...


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

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

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