CodeGym
キャンペーン
学習
コース
課題
アンケート & クイズ
ゲーム
ヘルプ
スケジュール
コミュニティ
ユーザー
フォーラム
チャット
記事
成功事例
アクティビティ
レビュー
サブスクリプション
ライトテーマ

レッスン

  • レビュー
  • 私たちについて
開始
学習開始
今すぐ学習を始める
  • 学習の進捗
  • コース
  • クエストマップ
  • レッスン
  • Externalizable: シリアライゼーションのきめ細かな調整

    JAVA 25 SELF
    レベル 43,レッスン 2
    Java の基本的なシリアライゼーションを拡張する: 自動の Serializable だけでは足りないときに、手動の契約である Externalizable が、 writeExternal/ readExternal メソッドとともに役立ちます。講義では、データ形式を完全にコントロールする方法、ファイルサイズを小さくする方法、後方互換性の維持方法を解説し、 ObjectOutputStream/ ObjectInputStream と比較、例や長所/短所、典型的なミス(必須の public 引数なしコンストラクタ、書き込み/読み取りの順序など)を示します。
    利用可能
  • シリアライズの挙動を調整: カスタムメソッド

    JAVA 25 SELF
    レベル 43,レッスン 3
    この講義では、Java のシリアライズ/デシリアライズの過程にメソッド writeReplace と readResolve を使ってどう介入するかを解説します。なぜオブジェクトをプロキシに差し替えるのか、シングルトンをどう保つのか、イミュータブルなオブジェクトをどう扱うのか、そしてそれが writeObject/ readObject とどう関係するのか。ステップバイステップの演習、処理フローの Mermaid 図、そして典型的なミスの解説を含みます。
    利用可能
  • シリアライゼーションのセキュリティ: ベストプラクティス

    JAVA 25 SELF
    レベル 43,レッスン 4
    Java における安全なシリアライゼーションの実践ガイド。信用できないソースからのデシリアライズがなぜ危険か、どのように ObjectInputFilter、キーワード transient、明示的な serialVersionUID、 instanceof による型検証、そして代替の交換フォーマット(JSON/Proto)で防御するかを解説します。実例コード、許可クラスのフィルタリング、典型的な誤りの解説も含みます。
    利用可能
  • ネストされたオブジェクトのシリアライズ:特徴

    JAVA 25 SELF
    レベル 44,レッスン 0
    この講義では、Java がオブジェクトグラフをディープシリアライズする方法を解説します。参照フィールドがどう扱われるのか、なぜすべてのネストされたオブジェクトが Serializable を実装すべきなのか、 NotSerializableException を回避するにはどうするか、どのような場合に修飾子 transient が役立つのか。ネスト、コレクション、循環参照を持つオブジェクトのシリアライズ/デシリアライズを例で示し、 serialVersionUID や巨大なオブジェクトグラフに関連する典型的な誤りも取り上げます。
    利用可能
  • 入れ子および階層オブジェクト: グラフのシリアライズ

    JAVA 25 SELF
    レベル 44,レッスン 1
    Java が複雑なデータ構造をどのようにシリアライズするか: 入れ子のコレクションや継承階層から、循環を含むオブジェクトグラフまで。なぜシリアライズが Map<String, List<Book>> で機能するのか、 List<Animal> で子クラスの実型がどのように保持されるのか、循環時に参照メカニズムが何をするのか、そしてどんな落とし穴があるのかを解説します。さらに、 ObjectOutputStream/ ObjectInputStream の役割、 writeObject/ readObject メソッド、 serialVersionUID フィールド、および修飾子 transient についても扱います。
    利用可能
  • 循環参照の問題: 検出と回避

    JAVA 25 SELF
    レベル 44,レッスン 2
    オブジェクトグラフにおける循環参照とは何か、シリアライズにとってなぜ危険か、そしてどう対処するかを解説します。Java の標準ストリーム — ObjectOutputStream/ ObjectInputStream — が既に出現したオブジェクトを自動で追跡し、参照(handle)を書き出して StackOverflowError を防ぐ仕組みを示します。カスタムシリアライズ( writeObject/ readObject, defaultWriteObject/ defaultReadObject)の落とし穴や、JSON における循環回避の戦略: アノテーション @JsonIdentityInfo、 @JsonBackReference/ @JsonManagedReference、 transient によるフィールド除外、ID の利用も扱います.
    利用可能
  • バイナリシリアライズにおけるオブジェクトの同一性

    JAVA 25 SELF
    レベル 44,レッスン 3
    Java がバイナリシリアライズでオブジェクトの同一性をどのように保持・復元するか: なぜ a. equals( b) による同値性は同一性( a == b)と同じではないのか、どのように ObjectOutputStream/ ObjectInputStream がオブジェクトグラフを追跡して重複の代わりに「再参照」を書き出すのか、循環があっても正しく動作する理由、そして writeReplace() と readResolve() が最終的な同一性にどう影響し得るのか。例を用いた解説: 循環、共有参照、実践、典型的なミス。
    利用可能
  • コレクションのシリアライズに関する典型的なエラーの分析

    JAVA 25 SELF
    レベル 44,レッスン 4
    この講義では、コレクションのシリアライズで最も頻出かつ厄介な問題を解説します。たとえば、要素が Serializable を実装していない場合に発生する java.io.NotSerializableException、ジェネリクスに起因する ClassCastException、そして serialVersionUID によるクラスのバージョン非互換まで。さらに、不変コレクション( List.of()、 Set.of()、 Map.of())の注意点、 transient/ static フィールドの挙動、パフォーマンスやファイルサイズの問題への対処(ストリーミング書き込みや圧縮、 GZIPOutputStream)についても扱います。安全なデシリアライズ( readObject/ writeObject)のための実践的なヒント、コード例、推奨事項も提供します。
    利用可能
  • バイナリシリアライゼーションの問題点:セキュリティと互換性

    JAVA 25 SELF
    レベル 45,レッスン 0
    この講義では、Java におけるバイナリシリアライゼーションのリスクを解説します。信頼できないソースからのデシリアライズがなぜ危険なのか(「gadget chain」、RCE)、 readObject や readResolve のような特別なメソッドがもたらす脅威、そしてどのように防御するか(ホワイトリスト方式、 JSON/ XML への切り替え、 Jackson のような安全なライブラリ)。クラスのバージョン互換性と serialVersionUID フィールドの役割、 InvalidClassException の挙動、 transient/ static の制約、パフォーマンス、さらにベストプラクティスと典型的なミスについても詳しく説明します。
    利用可能
  • Generics コレクションのシリアライズ: 特徴

    JAVA 25 SELF
    レベル 45,レッスン 1
    コンパイル時の型消去( type erasure)が Generics コレクションのシリアライズにどう影響するかを解説します。実行時には List<String> と List<Integer> が同じ ArrayList として扱われる理由、 ObjectOutputStream/ ObjectInputStream を通じて実際に何が書き込まれ・読み込まれるのか、 ClassCastException や unchecked キャスト警告がどこから来るのかを説明します。入れ子のコレクションや Map/ Set の例、 Gson/ Jackson にも触れ、安全なデシリアライズの実践をまとめます。
    利用可能
  • シリアライズにおける互換性と後方互換性 (backward compatibility)

    JAVA 25 SELF
    レベル 45,レッスン 2
    シリアライズ可能なクラスをどのように進化させてもデータを壊さないかを解説します: なぜ固定の serialVersionUID が必要なのか、JVM が互換性をどう検証するのか、どの変更が安全(フィールドの追加/削除)で、どれが危険(型変更、クラスを別パッケージへ移動)なのか。 transient/ static の役割、 writeObject/ readObject によるカスタムシリアライズの手法、バイナリシリアライズと XML/JSON の違い、互換性確保の戦略と典型的な誤り(例: InvalidClassException)を示します。
    利用可能
  • シリアライズ済みデータの移行とバージョニング

    JAVA 25 SELF
    レベル 45,レッスン 3
    本番環境でシリアライズ可能なクラスを安全に進化させる方法:フィールドや型を変更すると何が起こるのか、クラスのバージョンを serialVersionUID でどう管理するか、いつ変更し、いつ据え置くべきか、 readObject/ readFields を用いた「遅延」移行や「インプレース」変換の適用方法、さらに ObjectInputStream.readClassDescriptor() のような高度な手法。2 つのクラス版を使った実践的なシナリオと、 InvalidClassException の落とし穴を含む典型的なミスを解説します。
    利用可能
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • ...
  • 30
学ぶ
  • 登録
  • Javaコース
  • 課題のサポート
  • 料金
  • ゲームプロジェクト
  • Java構文
コミュニティ
  • ユーザー
  • 記事
  • フォーラム
  • チャット
  • 成功事例
  • アクティビティ
  • アフィリエイトプログラム
会社情報
  • 私たちについて
  • 連絡先
  • レビュー
  • プレスルーム
  • CodeGym for EDU
  • よくある質問
  • サポート
CodeGymCodeGym は、ゼロからJavaプログラミングを学ぶためのオンラインコースです。このコースは初心者がJavaを習得するのに最適です。即時検証付きの1200以上の課題と、Java基礎理論の必要な範囲を含みます。学習の成功を支援するために、クイズ、コーディングプロジェクト、効率的な学習に関するコンテンツ、Java開発者のキャリアに関する機能など、一連のモチベーション機能を導入しています。
フォローする
インターフェース言語
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands
日本語
한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
「プログラマーは生まれるのではなく、育てられる」 © 2026 CodeGym
MastercardVisa
「プログラマーは生まれるのではなく、育てられる」 © 2026 CodeGym