將參考傳入方法時,指向仍為同一物件。簡單實驗證明:
//: PassHandles.java
package c12;
public class PassHandles {
static void f(PassHandles h) {
System.out.println("h inside f(): " + h);
}
public static void main(String[] args) {
PassHandles p = new PassHandles();
System.out.println("p inside main(): " + p);
f(p);
}
} ///:~
toString() 列印時自動調用。PassHandles 直接繼承 Object 未覆寫 toString(),故用 Object 版本:列印類別名 + @ + 物件儲存位置(非參考位址)。
p inside main(): PassHandles@1653748 h inside f() : PassHandles@1653748
兩者儲存位置相同,證明 p 與 h 參考同一物件。比複製新物件有效得多,但帶來重要問題(別名副作用)。