我已经编写了这个函数,并且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;
}
}
答案 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)>0
或Book_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
答案 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,第二行),只是为了通知。