java.sql.Dateとjava.util.Dateをorg.joda.time.LocalDateに変換する

ryvantage:

私は古い(製品)コードのいくつかを注意深く細心の注意を払ってクリーンアップしようとしています。私がやろうとしています一つのことは、すべての私の用途に変換されjava.util.DateLocalDateとをDateTime

しかし、私が働いていた今夜、大きな障害に気づきました。私はこのコードを持っていました:

ResultSet results = stmt.executeQuery();

Date last = results.getDate("LAST_DELIVERY_DATE");
Date next = results.getDate("NEXT_DELIVERY_DATE");
boolean received;
if (last == null && next == null) {
    received = true; // order is not open
} else if (last == null) {
    received = false;
} else {
    received = true;
}

私は変換lastnextました:

LocalDate last = new LocalDate(results.getDate("LAST_DELIVERY_DATE"));
LocalDate next = new LocalDate(results.getDate("NEXT_DELIVERY_DATE"));

とNetbeansは下線を引いてif == null言った:

Unnecessary test for null - the expression is never null

これは理にかなっていLocalDateます。新しいインスタンスはnullにならないからです(nullにnew Object()することできません)。

しかし、この場合、そして多くの場合私のプログラム全体で、null日付はいくつかの重要な情報を伝えます。この場合、注文が1)開いているか(またはされていないか)、2)注文が受信されたか(またはされていないか)を示します。

だから、それを回避する方法を見つけるために、私は代わりにこのコードを使用できると考えました:

LocalDate last = results.getDate("LAST_DELIVERY_DATE") == null? null : new LocalDate(results.getDate("LAST_DELIVERY_DATE"));
LocalDate next = results.getDate("NEXT_DELIVERY_DATE") == null? null : new LocalDate(results.getDate("NEXT_DELIVERY_DATE"));

しかし、これは私にとって醜いようです。さらに、「ResultSet#getDate()」関数を2回呼び出します。これは、間違っている場合は私を修正します...データベースを2回呼び出しますよね?したがって、コードをjoda-timeに変換するためにjava.sql.Date、データベースからオブジェクトを取得するのにかかる時間を本質的に2倍にしています...

LocalDate last = LocalDate.fromDateFields(results.getDate("LAST_DELIVERY_DATE"));
LocalDate next = LocalDate.fromDateFields(results.getDate("NEXT_DELIVERY_DATE"));

値を取得するとをfromDateFieldsスローするため、どちらも機能しませんNullPointerExceptionnull

したがって、私の質問は、プログラム nullの日付とjoda-timeが必要な場合に、nullの日付をどのように最も適切に処理するかです。何か不足していますか?私が求めていることを達成する簡単な方法はありますか?

djechlin:

データベースに2回アクセスするため、3項演算子を使用するコードを簡潔にすることはできません。次のdateutilようなメソッドでライブラリを作成することを検討してください

    LocalDate convertToLocalDate(Date date) {
        if(date == null) return null;
        return new LocalDate(date);
    }

IMOがこのコードをクリーンアップして、頻繁に使用される軽量の静的メソッドを犠牲にすることは、良い取引です。

また、Javaを使用しないことも検討してください。||たとえば、JavaScriptを使用するだけで、この問題は発生しません。ScalaはNullableをより明示的にサポートすることでこれを解決する優れた言語であるとも聞いています。古いコードをクリーンアップしている限り、正しく実行することもできます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Joda LocalDateをjava.util.Dateに変換する方法

java.util.Dateをjava.time.LocalDateに変換する

Joda-Time DateTimeからjava.util.Dateを取得する

Joda-Time DateTimeをjava.util.Dateに、またはその逆に変換する方法は?

java.time.LocalDateをjava.util.Dateタイプに変換します

java.util.Date APIとJoda Time APIの違い

java.util.Dateをjava.sql.Dateに変換する方法

org.joda.time.Periodをjava.time.Periodに変換する

org.joda.timeをjava.timeに変換する

Joda LocalTimeをjava.sql.Dateに変換する

java.util.DateとJoda-Time DateTimeの日数の違いを見つけますか?

java joda-time get date time

java.sql.timestampをLocalDate(java8)java.timeに変換する方法は?

LOCALDATEにjava.util.Dateに変換

java.util.DateをJava8に変換する方法java.time.YearMonth

LocalDateをSQL Date Javaに変換する方法は?

joda LocalTimeをSQL Timeに変換する

java.time APIとjava.util.Dateの間の変換

java.time.LocalDateTimeとjava.util.Dateの間の変換

Joda時間のDateTimeがjava.util.Dateに変換されるという奇妙な問題

java.util.Dateとjava.sql.Date

JDBCを介して取得したjava.sql.Date値をjava.time.LocalDateに変換しますか?

org.joda.time.DateTimeからjava.time.ZonedDateTimeに変換する方法

Java 8 Date Time API(java.time)とJoda-Timeの違い

java.util.Dateを「java.time」タイプに変換しますか?

java.util.Dateをjava.util.Dateに変換します。

java.time.LocalDateTimeに変換するjava.sql.date

Java.util.Dateをcom.datastax.driver.core.LocalDateエラーに変換します

java.sql.Timestampからjava.util.Dateに変換する方法は?

TOP 一覧

  1. 1

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  2. 2

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  3. 3

    Python / SciPyのピーク検出アルゴリズム

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  6. 6

    androidsoongビルドシステムによるネイティブコードカバレッジ

  7. 7

    ZScalerと証明書の問題により、Dockerを使用できません

  8. 8

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  9. 9

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  10. 10

    二次導関数を数値計算するときの大きな誤差

  11. 11

    Ansibleで複数行のシェルスクリプトを実行する方法

  12. 12

    画像変更コードを実行してもボタンの画像が変更されない

  13. 13

    Reactでclsxを使用する方法

  14. 14

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  15. 15

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  16. 16

    PyTesseractを使用した背景色のため、スクリーンショットからテキストを読み取ることができません

  17. 17

    値間の一致を見つける最も簡単な方法は何ですか

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  20. 20

    好き/愛の関係のためのデータベース設計

  21. 21

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

ホットタグ

アーカイブ