gpt4 book ai didi

java - 两个对象值为null;为什么?

转载 作者:行者123 更新时间:2023-12-01 18:11:28 24 4
gpt4 key购买 nike

方法参数sd & ed是LocalDate,我需要返回日期对象,但是sd & ed返回null。我定义了一个私有(private)方法:

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-来自 Apache Commons Lang 的类 » group: 'org.apache.commons', name: 'commons-lang3', version: “3.9”

关于java - 两个对象值为null;为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60463251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com