有没有办法传递对象的副本而不是引用 Java 方法
Is there a way to pass a copy of the object rather than reference to Java method
也许有更聪明的方法来解决我的问题,所以我的问题可能没有为您指明正确的思考方向。
但是,我的问题是我只想在程序开始时初始化我的 Calendar
实例一次,所以我只使用那个日期和时间。
然后我想将该日历传递给一个方法,该方法 adds/subtracts 来自它的一些 months/days 并将该日期时间用于 API 调用。问题是,我想在应用程序的不同位置重复使用初始日期,但该方法不断更改我的 Calendar
实例。
代码:
Calendar
在主线程开始时的初始化:
Calendar cal = Calendar.getInstance();
实例使用方法:
private static String getDateUntil(int i, Calendar cal) {
int month = 0 - i;
//Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, month);
Date result = cal.getTime();
String dateUntil = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss").format(result);
return dateUntil;
}
调用此方法后,我的cal
发生了变化,我无法重新使用初始日期时间。有什么想法吗?
使用 calendar.clone() 获取副本。
在您的方法中使用克隆:
private static String getDateUntil(int i, Calendar cal) {
int month = 0 - i;
Calendar mycal = (Calendar)cal.clone(); // Make a copy of the initial instance
mycal.add(Calendar.MONTH, month);
Date result = mycal.getTime();
String dateUntil = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss").format(result);
return dateUntil;
}
也许有更聪明的方法来解决我的问题,所以我的问题可能没有为您指明正确的思考方向。
但是,我的问题是我只想在程序开始时初始化我的 Calendar
实例一次,所以我只使用那个日期和时间。
然后我想将该日历传递给一个方法,该方法 adds/subtracts 来自它的一些 months/days 并将该日期时间用于 API 调用。问题是,我想在应用程序的不同位置重复使用初始日期,但该方法不断更改我的 Calendar
实例。
代码:
Calendar
在主线程开始时的初始化:
Calendar cal = Calendar.getInstance();
实例使用方法:
private static String getDateUntil(int i, Calendar cal) {
int month = 0 - i;
//Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, month);
Date result = cal.getTime();
String dateUntil = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss").format(result);
return dateUntil;
}
调用此方法后,我的cal
发生了变化,我无法重新使用初始日期时间。有什么想法吗?
使用 calendar.clone() 获取副本。
在您的方法中使用克隆:
private static String getDateUntil(int i, Calendar cal) {
int month = 0 - i;
Calendar mycal = (Calendar)cal.clone(); // Make a copy of the initial instance
mycal.add(Calendar.MONTH, month);
Date result = mycal.getTime();
String dateUntil = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss").format(result);
return dateUntil;
}