а почему когда вместо synchronized (OurPresident.class)
делаю synchronized (president) вылетает ошибка, ведь это такая же ссылка на созданный класс?
KeLL
29 уровень
почему не president?
Обсуждается
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
velmik
13 августа 2022, 12:59
просто в условии:
6. Внутри синхронизированного блока должно быть проинициализировано поле president.
не дописано до словно что поле president должно быть которое уже указаного класса в пунктах 1,2, - 6
зато есть указание на Singleton.class
0
Вадим
17 мая 2022, 09:13
В нашем случае president - это не объект, а статическое поле класса OurPresident с типом <OurPresident>.
И в статическом блоке этого класса перед входом в блок синхронизации это поле всё еще не инициализировано. Оно пустое. Там нет никакой ссылки и, соответственно, объекта. Поэтому синхронизироваться по нему нельзя.
А по самому классу можно, т.к. класс (объект типа <Class>) в этот момент у нас уже есть.
+2
KeLL
13 октября 2021, 12:21
в javarush писали это распространенная ошибка новичков считать OurPresident.class
объектом, это не объект а имя класса. создай new OurPresident.class, что у тебя получится,ничего потому, что это не объект!
0
KeLL
13 октября 2021, 11:47
нет OurPresident.class это не объект, а имя,но я не понимаю - раньше мы блокировали мьют объекта через this, в статике это невозможно,это понятно, поэтому логично использовать такую же ссылку на объект как president, но вылетает nullpoint. Щас дошло возможно так получается потому что president еще пустой
0
hidden #598481
13 октября 2021, 11:58
Еще раз: OurPresident.class - это объект класса Class
Сохрани его в переменную и посмотри, что это будет за переменная, к какому классу она относится
Джава - это ООП, тут все является объектом какого-то класса, кроме примитивов.
+7
Tatyana
18 января 2022, 10:36
OMG
0
KeLL
21 января 2022, 11:16
Объяснять все, что не понимаешь " это все - ООП" не очень умно, заблуждаться Ваше право и больше прошу не вступать со мной в дискуссию.
0
hidden #598481
13 октября 2021, 11:39
OurPresident president - это объект класса OurPresident
OurPresident.class - это объект класса Class
+2