我有兩個Calendar實例變量,一個是全局聲明,另一個是本地聲明。 現在假設我一個日曆實例分配給另一個像將一個日曆實例分配給另一個日曆實例的問題
Calendar m_CalGlobally = Calendar.getInstance();
Calendar calLocally = m_CalGlobally;
現在我的問題是,如果我做出calLocally變量的任何改變,同樣的變化出現在m_CalGlobally實例變量,爲什麼發生這種事,有什麼辦法分配這個。
我有兩個Calendar實例變量,一個是全局聲明,另一個是本地聲明。 現在假設我一個日曆實例分配給另一個像將一個日曆實例分配給另一個日曆實例的問題
Calendar m_CalGlobally = Calendar.getInstance();
Calendar calLocally = m_CalGlobally;
現在我的問題是,如果我做出calLocally變量的任何改變,同樣的變化出現在m_CalGlobally實例變量,爲什麼發生這種事,有什麼辦法分配這個。
那是因爲m_CalGlobally
和calLocally
都是對相同(相同)對象的引用。要讓它們獨立,您需要創建另一個日曆實例。 假設你在第二行有一個錯字(Calendar calLocally = m_CalGlobally;
)
肯定不行。 這樣做
Calendar m_CalGlobally = Calendar.getInstance();
Calendar calLocally = (Calendar)m_CalGlobally.clone(); // Proper way to assign this.
//This will give you calender with same properties and also the changes of it wont be reflected on m_CalGlobally because assigning with equal operator make them point to same reference.