在 Java 中透過引用傳遞參數:可能嗎?
雖然 Java 沒有像 C# 那樣的明確 ref 關鍵字,但重要的是了解參數總是會按值傳遞。然而,當傳遞引用類型參數(例如物件)時,會傳遞對物件本身的引用,有效地模仿傳遞引用行為。
傳遞-值與表觀傳遞參考:
考慮以下內容code:
Object o = "Hello"; mutate(o); System.out.println(o); private void mutate(Object o) { o = "Goodbye"; }
此程式碼將在控制台上列印「Hello ”,表示物件的引用值保持不變。這是因為 Java 按值傳遞基本型別和對物件的參考。
實現按引用傳遞語義:
真正按引用傳遞對象,允許修改在要反映在呼叫程式碼中的方法中,您需要使用明確引用,如下所示:
AtomicReference<Object> ref = new AtomicReference<Object>("Hello"); mutate(ref); System.out.println(ref.get()); // Goodbye! private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
此程式碼將在控制台列印“Goodbye”,表明引用本身已被修改,並且更改已傳播回呼叫程式碼。
結論:
Java 不會本質上支援參數的引用傳遞。但是,透過使用明確參考和建構(例如 AtomicReference),您可以實現類似的語義並透過引用修改底層對象,從而有效地模仿按引用傳遞行為。
以上是Java 是否支援引用傳遞,如果不支持,如何模擬?的詳細內容。更多資訊請關注PHP中文網其他相關文章!