我不確定以下內容是否會導致深度或淺度複製?對數組的深度或淺度副本克隆方法嗎?
public void viewImages(final String[] instancesFilename) {
String[] instances = (String[])instancesFilename.clone();
}
是否有一個簡單快捷的方法來深度複製字符串數組?
我不確定以下內容是否會導致深度或淺度複製?對數組的深度或淺度副本克隆方法嗎?
public void viewImages(final String[] instancesFilename) {
String[] instances = (String[])instancesFilename.clone();
}
是否有一個簡單快捷的方法來深度複製字符串數組?
Java中的字符串是不可變的(無法更改它們的值)。因此,複製字符串時,深度和淺度副本之間沒有可檢測到的差異。
只是爲了進一步參考:副本會很淺,但這不應該是一個問題,因爲字符串是不可變的。
哦,有趣的事實:字符串不能用克隆方法克隆,因此如果您嘗試使用克隆方法執行字符串的深層副本,您將得到一個CloneNotSupportedException。
數組類也有copyOf方法。這通常用於創建數組副本。繼承人和所有差異的解釋:http://forum.codecall.net/topic/49450-copying-arrays/
這是一個有趣的article discussing using serialization to make deep copies。
調用圖中的對象確實需要支持序列化,但是在3層應用程序的許多業務類型中,必須存在。
本文提供了有關深度複製和淺圖複製的討論。
作者要求複製'String []',而不是'String'。 'instancesFilename'的元素可以稍後從外部改變,所以OP想要創建數組的副本。 – 2012-04-12 14:19:15
這是*可檢測*(是參考相同),但如果你正確使用字符串,它不應該*顯着*。 – 2012-04-12 14:19:21
@PhilippReichart:但是OP已經在執行一個克隆 - 「深層拷貝」與「淺拷貝」在這種情況下只能是關於字符串是否被克隆的問題 - 正如這個回答所說的那樣,它幾乎總是不重要的。 – 2012-04-12 14:20:12