Я сейчас изучаю Java, поэтому надеюсь, что этот вопрос не слишком очевиден. Я пришел с другого языка, который не имеет сборки мусора.
На этом другом языке я иногда создавал объекты в конструкторе, а затем удалял их в деструкторе, чтобы я мог использовать их в течение всей жизни объекта.
В качестве упрощенного примера у меня есть пользователь и класс бронирования. Класс бронирования ссылается на пользователя, но если я создаю пользователя в конструкторе класса бронирования, он разыменовывает пользователя, как только покидает конструктор и выходит из области видимости. Любой будущий ссылочный вызов пользователя booking.bookedBy возвращает ноль.
class user {
public String username;
public String displayName;
user(Connection conn, String usernameIn){
username = usernameIn;
... do DB stuff to populate attributes
}
}
class booking {
int bookingID;
user bookedBy;
...
booking(Connection conn, int bookedIDIn){
bookingID = bookedIDIn;
...do DB stuff to populate attributes and grab bookedByUserID
...field value and build the BookedByUsername
user bookedBy = new user (bookedByUsername)
}
}
Есть ли способ обойти это? Или мне нужно переосмыслить свой дизайн?