Java 两个对象的值为空;为什么?
方法参数sd&ed是LocalDate,我需要返回日期对象,但sd&ed返回null。 我的任务是定义私有方法:Java 两个对象的值为空;为什么?,java,localdate,Java,Localdate,方法参数sd&ed是LocalDate,我需要返回日期对象,但sd&ed返回null。 我的任务是定义私有方法: private void setQuarter(LocalDate sd,LocalDate ed,LocalDate today){ switch (getQuarter(today.getMonthValue())){ case 1: sd=LocalDate.of(today.get
private void setQuarter(LocalDate sd,LocalDate ed,LocalDate today){
switch (getQuarter(today.getMonthValue())){
case 1:
sd=LocalDate.of(today.getYear(),1,1);
ed=LocalDate.of(today.getYear(),3,31);
break;
case 2:
sd=LocalDate.of(today.getYear(),4,1);
ed=LocalDate.of(today.getYear(),6,30);
break;
case 3:
sd=LocalDate.of(today.getYear(),7,1);
ed=LocalDate.of(today.getYear(),9,30);
break;
case 4:
sd=LocalDate.of(today.getYear(),10,1);
ed=LocalDate.of(today.getYear(),12,31);
break;
default:
sd=LocalDate.of(today.getYear()+1,1,1);
ed=LocalDate.of(today.getYear()+1,1,1);
}
}
调用此方法:
LocalDate sd=null;
LocalDate ed=null;
setQuarter(sd,ed,today);
log.info("==> sd:{},ed:{}",sd,ed);
输出消息:
==>sd:null,ed:null因为在Java中方法的参数是按值传递的。 引用(即指针)通过引用值(对象地址)传递 代码应该如下所示:
Pair<LocalDate, LocalDate> dates = getSdAndEd(today);
LocalDate sd = dates.getLeft();
LocalDate ed = dates.getRight();
private Pair<LocalDate, LocalDate> getSdAndEd(LocalDate today){
switch (getQuarter(today.getMonthValue())){
case 1:
return Pair.of(
LocalDate.of(today.getYear(),1,1),
LocalDate.of(today.getYear(),3,31)
)
case 2:
...
}
}
Pair dates=getSdAndEd(今天);
LocalDate sd=dates.getLeft();
LocalDate ed=dates.getRight();
私有对GetsAnded(LocalDate today){
开关(getQuarter(today.getMonthValue())){
案例1:
返回对(
LocalDate.of(today.getYear(),1,1),
LocalDate.of(today.getYear(),3,31)
)
案例2:
...
}
}
在示例
Pair
-class from Apache Commons Lang»group:'org.Apache.Commons',name:'Commons-lang3',version:'3.9'
中,您今天是否正在初始化
?为什么LocalDate是按值的,如果参数是Map,它是按引用值的?LocalDate是引用->对的,在参数的方法是复制参考值非常感谢你的答案。