ポンコツPdM

プロフィール画像

SIerでの開発・プロジェクト運営の経験をもとに、Java・Springの実装、設計・テスト、チーム開発で役立つ手順をまとめています。

    JavaでClassCastExceptionになる原因と型変換の確認ポイントを解説する記事のアイキャッチ。

    実装・エラー解決

    2026/10/15

    JavaでClassCastExceptionになる原因|型変換で確認すべきポイント

    AIによる要約ClassCastExceptionは、実際のオブジェクトが変換先の型ではないのにキャストした場合に発生します。変数の宣言型がObjectでも、実体の型は変わりません。instanceofで分岐する方法はありますが、キャストが多い設計ではジェネリクス、専用DTO、型付きAPIへ見直します。raw ListやMap、外部ライブラリの戻り値は特に実行時まで誤りを検出できないため、入力境界で検証します。 Object、Map、古いraw List、外部ライブラリの汎用戻り値を扱うと、キャストが必要 ...

    LocalDate.plusDaysで日付が変わらない理由と戻り値の代入を解説する記事のアイキャッチ。

    実装・エラー解決

    2026/10/15

    LocalDate.plusDaysで日付が変わらない理由|戻り値を代入する必要がある

    AIによる要約LocalDateは不変オブジェクトです。plusDaysは元のdateを書き換えず、計算後の新しいLocalDateを返します。そのためdate.plusDays(1)だけではdateは変わりません。date = date.plusDays(1)のように戻り値を受け取ります。月末やうるう年はAPIが処理しますが、営業日、締日、タイムゾーンは別の業務ルールなので、単純な日数加算と混同しないことが重要です。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポ ...

    JavaのListにおける浅いコピーと深いコピーを解説する記事のアイキャッチ。

    実装・エラー解決

    2026/10/15

    JavaでListをコピーしても元データが変わる理由|浅いコピーと深いコピー

    AIによる要約new ArrayList(original)で新しいList本体は作れますが、要素オブジェクトは元Listと同じ参照です。コピー先の要素を変更すると元データからも変更が見えます。これが浅いコピーです。要素まで独立させるには、コピーコンストラクタ、recordなどの不変オブジェクト、明示的な変換を使います。List.copyOfはListの変更を禁止しますが、要素を深くコピーするわけではありません。 画面編集用DTO、取込前のバックアップ、更新前後の比較でListをコピーすることがあります。 ...

    既存コードはどこから読む?画面からDBまで1機能を追う手順

    学習・成長

    2026/10/15

    既存コードはどこから読む?画面からDBまで1機能を追う手順

    クラスが何百個も並び、上から読んでいるうちに何を調べていたか分からなくなる。そんなときは「問い合わせ一覧を開く」のように、一つの操作から読み始めます。 先に結論 調べる操作と、読み終える条件を決める。最初からすべてのクラスを理解しようとしない。 画面→HTTP→Controller→Service→DBを追う。戻り値が画面へ届く経路も確認する。 入口・入力・出力・未確認を一枚に残す。読んだことと、実行して確かめたことを分ける。 この記事では架空の問い合わせ管理を使い、一つの機能の経路と調査メモの作り方を示 ...

    JavaのMap.putの戻り値がnullになる理由と上書き前の値を解説する記事のアイキャッチ。

    実装・エラー解決

    2026/10/15

    JavaのMap.putの戻り値がnullになる理由|上書き前の値を確認する方法

    AIによる要約Map.putは追加した新しい値ではなく、そのキーに以前入っていた値を返します。初回登録なら通常null、同じキーを上書きした場合は上書き前の値です。ただし、null値を許すMapでは、未登録と以前の値がnullだった場合を戻り値だけで区別できません。上書きを禁止したいならcontainsKeyやputIfAbsent、既存時だけ更新するならreplaceなど、意図に合うAPIを選びます。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことが ...

    Optional.getでNoSuchElementExceptionになる原因と安全な値の取り出し方を解説する記事のアイキャッチ。

    実装・エラー解決

    2026/10/15

    Optional.getでNoSuchElementExceptionになる原因|安全な値の取り出し方

    AIによる要約Optional.getは値が存在するときだけ使え、emptyならNoSuchElementExceptionです。直前にisPresentを確認すれば動きますが、値の取り出しと分岐が離れると読みづらくなります。必須ならorElseThrowで業務例外へ、既定値ならorElse・orElseGet、変換ならmap、存在時だけ処理するならifPresentを使います。Optionalを使っても、0件を正常・404・業務エラーのどれにするかは仕様として決める必要があります。 Optionalは値 ...

    HashSet.addがfalseを返す理由と戻り値で重複判定する方法を解説する記事のアイキャッチ。

    実装・エラー解決

    2026/10/15

    HashSet.addがfalseを返す理由|戻り値で重複を判定する方法

    AIによる要約HashSet.addは、要素が新しく追加されSetの内容が変わった場合にtrue、同じ要素がすでに存在して追加されなかった場合にfalseを返します。重複を検知するだけならcontainsしてからaddする二段階処理ではなく、addの戻り値を使えます。ただし、自作クラスの重複判定はequalsとhashCodeに依存します。入力順を保つならLinkedHashSetも検討します。 この記事はXへ投稿したJavaクイズの詳しい解説です。まず問題を解きたい方は、Xの元ポストを開くことができます ...

    JavaでIndexOutOfBoundsExceptionになるListと配列の境界を解説する記事のアイキャッチ。

    実装・エラー解決

    2026/10/15

    JavaでIndexOutOfBoundsExceptionになる原因|Listと配列の確認ポイント

    AIによる要約Listや配列の有効な添字は0から要素数-1までです。sizeやlengthと同じ値を指定すると範囲外になります。固定位置のget、空リストの先頭取得、ループ条件の

    仕様確認のチェックリスト|実装前に聞くべきことと質問例

    設計・テスト・レビュー

    2026/9/8

    仕様確認のチェックリスト|実装前に聞くべきことと質問例

    「問い合わせに件名を追加してください。必須でお願いします」。入力欄を作れば始められそうでも、下書きの扱いや変更できる人、過去データへの影響が気になることがあります。 先に結論 依頼を利用者の操作に置き換える。誰が、いつ、何をできるかを確かめる。 決まっていることと未決事項を分ける。根拠・決める人・着手への影響を残す。 回答を資料とテストへ反映する。確認待ちの間に進めてよい範囲も相談する。 以下は架空の問い合わせ管理の例です。件名は必須・1〜100文字、状態は「下書き・受付済み・対応中・完了」、利用者は投稿 ...

    Javaの配列でequalsがfalseになる理由とArrays.equalsの違いを解説する記事のアイキャッチ。

    実装・エラー解決

    2026/10/14

    Java配列のequalsがfalseになる原因|Arrays.equalsとassertArrayEqualsで直す

    AIによる要約Java配列のequalsやJUnitのassertEqualsへ別々の配列を渡すと、要素が同じでも一致しません。業務コードの1次元配列はArrays.equals、JUnitの期待値比較はassertArrayEqualsを使います。この記事では同じ入力で失敗と修正後の成功を確かめ、順序・長さ違い、多次元配列、配列フィールドの防御的コピーまで整理します。 JUnitで同じ要素の配列を比較して失敗した場合は、まずassertEquals(expected, actual)をassertArr ...