Java 声纳问题“;不应重新分配方法参数、捕获的异常和foreach变量;

Java 声纳问题“;不应重新分配方法参数、捕获的异常和foreach变量;,java,sonarqube,Java,Sonarqube,我的代码进行了声纳扫描,得到了一个重大错误,即“不应重新分配方法参数、捕获的异常和foreach变量”。我不明白他们是怎么被重新分配的。这是他们的解决方案吗?在下面的代码中,我得到了一个错误,上面写着“reportForm=newreportform();” public ModelAndView getPcVolumeTopOffendersShortpaid(@Valid @ModelAttribute("reportForm") ReportForm reportForm, Bindin

我的代码进行了声纳扫描,得到了一个重大错误,即“不应重新分配方法参数、捕获的异常和foreach变量”。我不明白他们是怎么被重新分配的。这是他们的解决方案吗?在下面的代码中,我得到了一个错误,上面写着“reportForm=newreportform();”

 public ModelAndView getPcVolumeTopOffendersShortpaid(@Valid @ModelAttribute("reportForm") ReportForm reportForm, BindingResult result) {
    // Handle invalid request date cleanly ...
    // when invalid or doesn't exist, use the current date for selection
    // otherwise, selection is valid and can be used in criteria for query
    if (reportForm == null || result.hasErrors()) {
        reportForm = new ReportForm();
        reportForm.setMonthYear(DateFormatterUtil.getAbbreviatedMonthYearFromCurrentDateTime());
    }

    // Create the criteria for the specified, and retrieve the report
    reportForm.setReportType(ReportType.SHORTPAID_TOP_OFFENDERS_BY_VOLUME);
    TopOffendersReportCriteria topOffendersReportCriteria = reportService.getTopOffendersReportCriteria(reportForm);
    List<TopOffendersReport> list = reportService.getTopOffendersReport(topOffendersReportCriteria);

    // Return the reports view and the supporting page objects
    ModelAndView mv = new ModelAndView("reports/topOffendersShortpaidVolume");
    mv.addObject("reportList", list);
    mv.addObject("reportForm", reportForm);
    return mv;
}
public model和view getpcvolumeTopoffendersShortPad(@Valid@modeldattribute(“reportForm”)reportForm reportForm,BindingResult){
//干净地处理无效的请求日期。。。
//如果无效或不存在,请使用当前日期进行选择
//否则,选择是有效的,可以在查询条件中使用
if(reportForm==null | | result.hasErrors()){
reportForm=新的reportForm();
reportForm.setMonthYear(DateFormatterUtil.GetContractedMonthYearFromCurrentDateTime());
}
//为指定的创建条件,并检索报告
reportForm.setReportType(ReportType.SHORTPAID\u TOP\u违犯者按卷);
TopOffenderReportCriteria TopOffenderReportCriteria=reportService.GetTopOffenderReportCriteria(reportForm);
List List=reportService.getTopOffenderReport(TopOffenderReportCriteria);
//返回报表视图和支持的页面对象
ModelAndView mv=新的ModelAndView(“报告/地形要素短视量”);
mv.addObject(“报告列表”,列表);
mv.addObject(“报告格式”,报告格式);
返回mv;
}
在前面提到的行中

reportForm = new ReportForm();
reportForm是方法参数。意味着它只在局部可见。如果reportForm引用了作为实参传递的某个对象,则指向另一个对象会丢失此引用。很可能你还想做些别的事情。方法完成后,新创建的对象将丢失


如果要将对象创建委托给您的方法-它将不起作用。

您可以通过创建一个新的局部变量(如reportFormLocal)来修复此错误,然后根据检查(null、hasErrors等)将方法参数值分配给它。在方法的其余部分使用reportFormLocal。

reportForm=new reportForm();方法参数重新分配。为什么要将reportForm传递给该方法?在这一行中您希望实现什么?