Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > static поле


Автор: Fieral 6.7.2009, 13:44
например:

Код

public MyClass{
....
public static OtherClass CONSTANT = new OtherClass();

...
}


Поле CONSTANT будет общим для всех инстанцов MyClass. Вопрос: когда именно будет вызываться конструктор new OtherClass(); и сколько раз?

Автор: MisterCleric 6.7.2009, 13:54
Цитата

когда именно будет вызываться конструктор new OtherClass(); и сколько раз? 


Будет проинициализировано один раз при первом обращении к этому классу, т.е. Во время его загрузки. А это уже не важно - будь то просто вызов этого статического поля, или создание экземпляра этого класса или создание экземпляра класса-потомка. Кажись так...

Автор: aleksandy 7.7.2009, 05:41
Раз уж это константа поле надо бы еще как final объявить

Автор: Fieral 7.7.2009, 14:38
Почему final?

Автор: AxNe0 7.7.2009, 14:50
Fieral, chto by nelzya bylo menyat znachenie ssylki.

Добавлено через 38 секунд
Fieral, chto by nelzya bylo menyat znachenie ssylki.

Автор: Fieral 7.7.2009, 15:22
всмысле имеется ввиду "модифицировать поля инстанца  new OtherClass(); "?

Автор: LSD 7.7.2009, 16:03
Fieral, может уже пора почитать книги по Java? smile 
Чтобы узнать что означает тот или иной модификатор, когда и как инициализироются поля и т.д.

Добавлено через 1 минуту и 23 секунды
Тем более что AxNe0 написал достаточно ясно, что нельзя будет модифицировать значение ссылки (т.е. CONSTANT).

Автор: Fieral 7.7.2009, 16:13
ну там какбы пишут что final это значит что "не может быть переопределеён наследниками" ,а зачем это нужно - не понятно.

Помимо этого в книгах ещё "многабукф" где вам расскажут что: "спортсмен имплементирует интерфейс, когда бежит покупать цветы, потому что ему неважно как они растут ибо он по сути бубновый паук, который ест время по понедельникам..." http://forum.vingrad.ru/forum/topic-262224/kw-учебники-раммированию.html - Книги по программированию понятны только тем кто их писал или кто уже "в теме".

Автор: agR 7.7.2009, 17:03
Цитата(Fieral @  7.7.2009,  16:13 Найти цитируемый пост)
"не может быть переопределеён наследниками"

Ну так, речь же идет сейчас не о наследовании. Вообще, модификатор final может стоять перед многими вещами (классы, методы, поля, локальные переменные), но по сути делает он одно и то же. Подробнее можно вычитать из книг, что займет минут 5, от силы 10. 
Цитата(Fieral @  7.7.2009,  16:13 Найти цитируемый пост)
Книги по программированию понятны только тем кто их писал или кто уже "в теме".

Все кто "в теме" хоть одну книгу да прочитали smile 

Автор: Skynin 7.7.2009, 17:38
Цитата

ну там какбы пишут что final это значит что "не может быть переопределеён наследниками"

для - методов.

Для полей, переменных final в Java работает вместо const или readonly в некоторых других языках.
То есть для поля, переменной, допускается одна и только одна инициализация.

Посмотрите примеры по ссылке (знание английского не обязательно)
http://www.javamex.com/java_equivalents/const_java.shtml

Автор: LSD 7.7.2009, 17:57
Цитата(Fieral @  7.7.2009,  16:13 Найти цитируемый пост)
ну там какбы пишут что final это значит что "не может быть переопределеён наследниками" ,а зачем это нужно - не понятно.

Помимо этого в книгах ещё "многабукф" где вам расскажут что: "спортсмен имплементирует интерфейс, когда бежит покупать цветы, потому что ему неважно как они растут ибо он по сути бубновый паук, который ест время по понедельникам..." Ну вы понимаете о чём я? - Книги по программированию понятны только тем кто их писал или кто уже "в теме".

1. Стоит все таки читать книги полностью, а не по диагонали. Фраза final это значит что "не может быть переопределеён наследниками" относится только к методам. Для полей и классов у него другое значение.

2. Я согласен, что бывают плохие книги по программированию, но из этого вовсе не следует что книги зло и читать их не стоит. Тот же Эккель вполне нормально описал http://bruceeckel.by.ru/tij/Chapter06.html#Heading222.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)