没有退货声明Prroblem

时间:2017-02-21 09:55:34

标签: java return

我已经编写了这个函数,并且Eclipse表示类型为Date没有返回语句,但是其他地方有{}!

哪里可能是问题?

public Date compareDate(Date Kred_Deb_Date, Date Book_Date){
    Date date1 = null;
    if (Book_Date.compareTo(Kred_Deb_Date)<0){
        date1 = get_book_date();
        compareDate(Kred_Deb_Date, date1);
    }else if (Book_Date.compareTo(Kred_Deb_Date)>0){
        date1 = Book_Date;
        return date1;
    }
}

4 个答案:

答案 0 :(得分:4)

返回应该在您的条件之后或您可以发送默认日期对象。如果没有条件满足则返回默认日期。

请检查下面的代码,我已经更改了返回代码位置。

public Date compareDate(Date Kred_Deb_Date, Date Book_Date){
    Date date1 = null;
    if (Book_Date.compareTo(Kred_Deb_Date)<0){
        date1 = get_book_date();
        compareDate(Kred_Deb_Date, date1);
    }else if (Book_Date.compareTo(Kred_Deb_Date)>0){
        date1 = Book_Date;

    }
        return date1;
}

答案 1 :(得分:2)

Java坚持认为,对于非void函数,所有程序控制路径上都有return值。

你目前安排事情的方式,情况并非如此:

Book_Date.compareTo(Kred_Deb_Date)>0Book_Date.compareTo(Kred_Deb_Date) == 0不会返回值。

您的意思是在return compareDate(Kred_Deb_Date, date1);块的true部分写if,并将else if (...)替换为else吗?

答案 2 :(得分:1)

如果您的 renderer: function (value, metaData, record, rowIndex, colIndex, store, view) { metaData.tdAttr = 'data-qtip= "' + value + '" data-qclass="tipCls" '; return value; } 条件已经过验证,则您无法退回任何内容。

两种解决方案:

  • if
  • 中添加return语句
  • 在功能的末尾添加一个return语句

在这种情况下,我猜您尝试执行以下操作:

if

答案 3 :(得分:0)

已经给出了将返回语句向下移动一行的常见答案,因此这里有一个更现代的解决方案,可以防止您将null作为返回值:

public Optional<Date> compareDate(Date Kred_Deb_Date, Date Book_Date){
    Date date1 = null;
    if (Book_Date.compareTo(Kred_Deb_Date)<0){
        date1 = get_book_date();
        compareDate(Kred_Deb_Date, date1);
    } else if (Book_Date.compareTo(Kred_Deb_Date)>0){
        date1 = Book_Date;
    }
    return Optional.ofNullable(date1);
}

但是尽管如此,还是有一个未使用的递归调用,它没有使用返回值(首先是if,第二行),只是为了通知。