Сотрудник (который очень новичок в Java) остановился сегодня и спросил, что похоже на очень простой вопрос. К сожалению, я сделал совершенно ужасную работу, пытаясь объяснить это ему. У него была книга с небольшим кодом, который выглядел так:
class XCopy {
public static void main(String[] args) {
XCopy x = new XCopy(); // 1
x.doIt();
}
public void doIt() {
// Some code...
}
}
Он был сбит с толку в строке 1. То, что он хотел знать, было причиной того, что новый экземпляр XCopy может быть создан в определении класса XCopy. Он думал, что это дало бы какую-то ошибку прямого реферирования. В конце концов, мы еще не закончили объявлять, что такое класс XCopy, так как мы можем создать его?
Я, конечно, знаю, что это правильный код, но когда я попытался объяснить это ему, я обнаружил, что споткнулся о ответ, и, боюсь, я оставил его более смущенным, чем когда он начал. Я хотел бы услышать некоторые другие объяснения, почему это работает.
Любые мысли? Почему вы можете создать экземпляр класса в самом определении класса?