我有两个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.