初學 Java 時常見疑問:程式碼中明沒有 new Course(),為何仍能呼叫 course.getXXX()?
變數 Course cr 是一個物件引用。透過 courseToStudentList.get(i) 從集合中取出的已經是實例的引用,並非建立新物件。只要引用指向真實存在的物件(非 null),即可呼叫其方法。
new 建立物件並回傳引用;集合裡儲存的也是引用。null 時,可正常存取欄位與方法。null,呼叫方法會拋出 NullPointerException。Course cr = courseToStudentList.get(i);
if (cr != null) {
// 安全呼叫
String name = cr.getName();
}
理解「引用指向既有實例」與「new 建立新實例」的區別,是掌握 Java 記憶體模型的關鍵。