我现在正在学习Java,所以我希望这个问题不是太明显。我来自另一种没有垃圾收集的语言。 在另一种语言中,我有时在构造函数中创建对象,然后在析构函数中删除它们,这样我就可以在对象的整个生命周期中使用它们。
作为一个简化的示例,我有一个用户和一个预订舱位。预订类引用用户,但如果我在预订类的构造函数中创建用户,一旦用户离开构造函数并超出范围,它就会取消引用该用户。任何 future 对 booking.bookedBy 用户的引用调用都会返回 null。
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)
}
}
有办法解决这个问题吗?或者我需要重新考虑我的设计吗?
最佳答案
您正在构造函数中创建一个新的 bookedBy
用户变量,而不是使用类的成员变量。
您可能想要更改:
用户bookedBy = new user(bookedByUsername);
与:
bookedBy = new user(bookedByUsername);
关于java - Java 中对象内对象的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3929280/