[Туплю][Java]Почему Object не abstract?

Gaishnik

Почему класс Object не объявлен как Abstract? Ведь нет никакого смысла создавать экземпляры Object.

oliver11

Нет никакого смысла запрещать это делать.
В benchmark-ах, например, создают экземпляры Object.

Gaishnik

Зачем?

Dasar

классы как абстрактные обычно помечают, если у них есть абстрактные методы, которые требуют обязательного перекрытия.
у объекта таких абстрактных методов - нет, поэтому он не абстрактный.

oliver11

В цикле. Чтобы узнать скорость выделения памяти и сборки мусора, например.

pitrik2

Ведь нет никакого смысла создавать экземпляры Object.
ну это часто делают когда создают гардов, типа

final Object guard = new Object;

synchronize(guard) {
...
}

хотя конечно тут пофиг что создавать, но обжект как-то понятнее

Gaishnik

ну это часто делают когда создают гардов, типа
code:
final Object guard = new Object;
synchronize(guard) {
...
}
хотя конечно тут пофиг что создавать, но обжект как-то понятнее

Во, хороший пример, закрываю тему.

kruzer25

Можно помечать класс без абстрактных методов как абстрактный.
Можно, но зачем?
Тут вопрос не в том, почему можно делать Object-ы, а в том, почему надо запретить их делать, что плохого случится, если их будут делать.

VitMix

хотя конечно тут пофиг что создавать, но обжект как-то понятнее
На мой взгляд понятнее как раз было бы создавать что-то типа:
public final class Guard {}
final Guard guard = new Guard ;
synchronize (guard)
{
...
}

klyv

На мой взгляд понятнее как раз было бы создавать что-то типа:
public final class Guard {}
final Guard guard = new Guard ;
synchronize (guard)
{
...
}
Сравни с
final Object guard = new Object;
synchronize (guard)
{
...
}
и скажи, насколько понятней...
Оставить комментарий
Имя или ник:
Комментарий: