- HOME >
- ポンコツPdM
ポンコツPdM

独立系のSIerに務めるSE,PM。 仕事の上で得たIT関連やプロジェクト運営関連の知識を書きます。 使用技術:Java,ウェブ関連全般,データベース全般 (どれも広く浅く)
学習と現場をつなぐ
AIによる要約Javaの配列は内容比較用のequalsをオーバーライドしていないため、a.equals(b)は同じ配列オブジェクトかを確認します。要素を順番に比較するならArrays.equals、多次元配列ならArrays.deepEqualsを使います。JUnitでもassertEqualsではなくassertArrayEqualsを選びます。配列をDTOやMapのキーに持たせる場合は、比較だけでなくhashCodeや防御的コピーも検討します。 この記事はXへ投稿したJavaクイズの詳しい解説です。ま ...
AIによる要約LocalDate.parse(text)は標準でISO形式のyyyy-MM-ddを期待します。2026/08/14や20260814を解析するにはDateTimeFormatterを指定します。形式が合っていても2月30日など存在しない日付はDateTimeParseExceptionです。表示用と入力用のフォーマッター、暦年のuuuuと年のyyyy、厳密な解析、空入力の扱いを分け、外部インターフェースごとに契約を固定します。 画面、CSV、外部APIでは日付の表記が異なります。Javaの ...
AIによる要約Map.ofはnullのキーと値を許可しないため、Map作成時点でNullPointerExceptionになります。getを呼んだ時ではありません。また、作成したMapへputやremoveもできません。HashMapはnullを許可しますが、キー未登録と登録済みnullの区別が必要になります。固定データならMap.of、値の追加・変更やnullを扱うなら要件に合う別の表現を選びます。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことがで ...
AIによる要約Booleanはtrue・falseに加えてnullを持てます。if(flag)やboolean変数への代入ではBooleanからbooleanへの自動アンボクシングが行われ、flagがnullだとNullPointerExceptionになります。trueだけを判定するならBoolean.TRUE.equals(flag)、必ず二値なら最初からbooleanを使います。nullを『未設定』『未回答』『対象外』として使うなら、三値の意味を明示し、既定値で潰してよいか確認します。 boolea ...
AIによる要約e.getMessage()が返すのは例外メッセージのStringだけです。SLF4JへThrowableを渡していないため、発生クラスや行番号を含むスタックトレースは記録されません。log.error("保存失敗", e)またはlog.error("userId={}の保存に失敗", userId, e)のように例外自体を最後の引数へ渡します。ただし、同じ例外を各層で繰り返しERROR記録しないことも重要です。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、 ...
AIによる要約NumberFormatExceptionは、文字列が対象の数値型として解釈できない場合に発生します。空文字、空白、3桁カンマ、全角数字、小数点、単位付き、int範囲外など原因は複数です。例外をcatchして0へ変換すると未入力や不正値を隠します。入力仕様を決め、文字列段階の形式チェック、必要な正規化、適切な数値型への変換、利用者向けエラーの返却を境界で行います。 画面入力、CSV、環境変数、外部APIは、数値に見えるデータも最初は文字列です。Integer.parseIntへ渡すだけで変換 ...
AIによる要約BigDecimalのdivideは、結果を正確に有限小数で表せない場合、丸め指定なしではArithmeticExceptionを投げます。1÷3のような計算では、業務仕様に基づいてscaleとRoundingModeを明示します。例外を避けるため適当に丸めるのではなく、金額、税率、表示値、DB保存値のどの段階で何桁にするかを決めることが重要です。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことができます。 金額、単価、税率、進捗率などを ...
AIによる要約isEmptyは文字数が0かを判定し、空白だけの文字列はfalseです。isBlankは空文字または空白文字だけならtrueになります。どちらも呼び出し元がnullならNullPointerExceptionです。画面入力では未送信、空文字、空白だけ、値ありを区別し、必須項目ならisBlank、空文字だけを特別扱いするならisEmptyなど、業務仕様に合わせます。trimとstripは文字列を変換するメソッドで、判定とは役割が異なります。 入力チェックでは『値がない』という言葉をよく使います ...
AIによる要約String.splitの引数は単なる区切り文字ではなく正規表現です。正規表現のピリオドは任意の1文字を表すため、split(".")では文字列全体が区切りとして扱われます。ピリオドそのもので分割するならsplit("\\.")、区切り文字が変数ならPattern.quoteを使います。また、末尾の空項目を残すには第2引数へ-1を指定します。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことができます。 画面入力、ファイル名、バージョン番号 ...
AIによる要約Integer同士の==は数値ではなく参照を比較します。ただしInteger.valueOfが一定範囲のインスタンスを再利用するため、小さい値ではtrue、大きい値ではfalseとなることがあり、さらに混乱を招きます。数値として同じか確認するならequals、大小比較ならcompareやintValueを使います。Integerがnullの可能性を持つ場合はObjects.equalsや明示的なnull判定を選びます。 Stringの==が参照比較だと知っていても、Integerは数値だから ...