亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將以下 java 代碼轉換為 java 8?

如何將以下 java 代碼轉換為 java 8?

阿波羅的戰車 2023-03-31 09:20:48
我這樣寫java代碼, private DateTime getChangedDoseEndDate(final DateTime actualTerminateDate, final DateTime discontinueDate)  {    if (actualTerminateDate == null)    {      return discontinueDate;    }    if (discontinueDate == null)    {      return actualTerminateDate;    }    else if (actualTerminateDate.isBefore(discontinueDate))    {      return actualTerminateDate;    }    else    {      return discontinueDate;    }  }我正在嘗試將其轉換為 Guava 以編寫單行函數。這是,我試過一個。這是對的嗎 ?我還需要它轉換 java 8 。return Ordering.natural().nullsLast().min(discontinueDate, actualTerminateDate);
查看完整描述

1 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

如果你想讓你的代碼更簡潔,你有其他方法可以做到,除非你只想用一行代碼來炫耀。這是處理它的方法之一。它不是單行代碼,也沒有使用任何 lambda,但它仍然是有效的 Java 8 代碼并且具有相同的邏輯,但以更簡單的方式表達。


DateTime getChangedDoseEndDate(final DateTime actualTerminateDate, final DateTime discontinueDate) {

  if (actualTerminateDate != null && actualTerminateDate.isBefore(discontinueDate)) {

    return actualTerminateDate;

  }

  return discontinueDate;

}

您甚至可以使用三元運算符并將其放入單行代碼中(并且它仍然是有效的 Java 8 代碼)。


DateTime getChangedDoseEndDate(final DateTime terminateDate, final DateTime discontinueDate) {

  return terminateDate != null && terminateDate.isBefore(discontinueDate) ? terminateDate : discontinueDate;

}

但是,如果您可以保證空安全,您可能會擁有類似于您的 Guava 代碼的東西(自您提出以來,它運行良好)。


DateTime getChangedDoseEndDate(@Nonnull final DateTime actualTerminateDate, @Nonnull final DateTime discontinueDate) {

  return Stream.of(actualTerminateDate, discontinueDate).min(Comparator.naturalOrder()).get();

}


查看完整回答
反對 回復 2023-03-31
  • 1 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號