【发布时间】:2020-03-10 18:35:32
【问题描述】:
问题的措辞有点奇怪。我不知道如何正确表达这个问题,但这里是我所指的一个例子。
假设我有一个名为 Student 的班级。
public class Student {
private int id;
private String name;
private Teacher teacher;
private GradeLevel gradeLevel;
public Student(int id, String name, Teacher teacher, GradeLevel gL) {
this.id = id;
this.name = name;
this.teacher = teacher;
this.gradeLevel = gL;
}
}
在我的教师课程中,我希望所有学生都有这位教师。
public class Teacher {
private int id;
private String name;
private List<Student> students;
public Teacher(int id, String name) {
this.id = id;
this.name = name;
this.teacher = teacher;
updateStudents();
}
public void updateStudents() {
Connection con = null
PreparedStatement statement = null;
ResultSet rs = null;
try {
con = DriverManager.getConnection(URL, USERNAME, HOST);
statement = con.prepareStatement("SELECT * FROM students WHERE teacher_id = ?");
statement.setInt(this.id);
rs = statement.executeQuery();
students = new ArrayList<>();
while(rs.next()) {
Student student = new Student(rs.getInt(1), rs.getString(2), this, rs.getString(3));
students.add(student);
}
} catch (SQLException e) {
students = null;
} finally {
rs.close();
statement.close();
con.close();
}
}
}
通过将 Teacher 对象添加到新 Student,我是在创建重复对象还是只是对原始对象的引用?这是最好的方法还是有更好的方法?这种方法有什么问题(如果有的话)?
任何帮助或建议将不胜感激。
【问题讨论】:
-
谢谢大家的cmets。
标签: java performance object memory-leaks reference