128-java-generics について
コンパイル時の型安全性と再利用可能な API の改善を支援する Java ジェネリクススキルです。ワイルドカードの変位、型消去、安全な可変長引数、ジェネリック API 設計を扱い、コンパイルと検証の手順も定めています。
主な機能
- 01raw 型と安全でないキャストの回避
- 02PECS に基づくワイルドカード変位
- 03型消去への対応
- 04SafeVarargs によるヒープ汚染防止
- 05再利用可能なジェネリック API 設計
- 06レコードや sealed 型との併用
活用シーン
- 01Java のジェネリック型安全性の改善
- 02型を再利用できる API へのリファクタリング
- 03ワイルドカードと変位の使い方のレビュー
- 04未検査キャストや raw 型への対処
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jabrena/ plinth --skill 128-java-genericsインストール後、Claude Code で/128-java-genericsを入力して読み込まれたか確認します。
同梱ファイルreferences/128-java-generics.md
詳細
Java ジェネリクスのベストプラクティス
包括的なジェネリクスのベストプラクティスを適用して Java コードをレビューおよび改善し、コンパイル時の型安全性を確保するとともに、柔軟で再利用可能な API を実現します。
このスキルで扱う内容
- 型安全性:raw 型の回避、安全でないキャストの排除
- コードの再利用性:複数の型コンテキストで使用できるジェネリックメソッドと型
- PECS ワイルドカード:プロデューサーには
? extends、コンシューマーには? super - 型推論に使用するダイヤモンド演算子
- 型消去への対応:型トークン、ファクトリーパターン、配列の生成
- ジェネリック継承と変性:不変性、共変性、反変性
- ヒープ汚染を防ぐ
@SafeVarargs - ワイルドカードキャプチャヘルパー、流れるようなビルダーに使用する自己境界ジェネリクス(CRTP)
- 適切なワイルドカード API 設計:
Comparator<? super T>、Function<? super T, ? extends R> - 配列とジェネリクスの共変性に関する落とし穴、
TypeReference/TypeTokenを使ったシリアライズ - ジェネリック型の命名規則(
T、E、K/V、?)、型安全な異種コンテナ - レコード、シールド型、パターンマッチングとの統合
対象範囲: このリファレンスは、各中核領域の例(適切/不適切なコードパターン)ごとに構成されています。該当する例に基づいて推奨事項を適用してください。
制約
ジェネリクスの変更を適用する前に、プロジェクトがコンパイルできることを確認してください。コンパイルに失敗した場合は、直ちに中止してください。解決するまで先に進まないでください。改善を適用した後は、完全な検証を実行してください。
- 必須: 変更を適用する前に
./mvnw compileまたはmvn compileを実行してください - 安全性: コンパイルに失敗した場合は、直ちに中止して先に進まないでください。コンパイル失敗は作業を妨げる条件です
- 検証: 改善を適用した後に
./mvnw clean verifyまたはmvn clean verifyを実行してください - 適用前: 詳細な例、適切/不適切なパターン、制約を確認するため、リファレンスを読んでください
- エッジケース: 依頼の範囲が曖昧な場合は、変更を適用する前に中止して確認してください
- エッジケース: 必要な入力、ファイル、またはツールが不足している場合は、不足しているものを報告し、セットアップの案内を進めてよいか確認してください
このスキルを使用する場面
- ジェネリクスを使用してコードを改善する
- ジェネリクスを適用する
- ジェネリクスを使用してコードをリファクタリングする
- Java API のジェネリック型安全性を高める
- Java コードの raw 型や未検査キャストを修正する
ワークフロー
- ジェネリクスの変更前にプロジェクトをコンパイルする
./mvnw compile または mvn compile を実行し、コンパイルに失敗した場合は直ちに中止してください。
- ジェネリクスのリファレンスを読み、型安全性を評価する
references/128-java-generics.md を読み、raw 型、安全でないキャスト、ワイルドカードの誤用、API の変性に関する改善の機会を特定してください。
- ジェネリクスのリファクタリングを適用する
動作を維持しながら、選択したジェネリック型と API の改善を実装してください。
- 完全なビルドで検証する
改善を適用した後に ./mvnw clean verify または mvn clean verify を実行してください。
リファレンス
詳細なガイダンス、例、制約については、references/128-java-generics.md を参照してください。