ジェネリクスの基礎(T、型推論)
ジェネリック型パラメータ T 、それによってコンパイル時の安全性が得られる理由、diamond演算子による型推論を学びます。
「ジェネリクスの基礎(T、型推論)」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全3レッスンが含まれています。
なぜジェネリクスなのか
ジェネリクスは、コンテナやユーティリティに型を追加するため、コンパイラーがコードを保護できます。利点:
- 型安全性 — 型が意図せず混在しません。
- キャスト不要 — よりすっきりしたコードになります。
- 再利用可能 — 1つのクラスで多くの型に対応できます。
Tとは何か
T(型パラメーター)は、実際の型を表すプレースホルダーです。Box<String>と記述すると、コンパイラーはその使用箇所で T を String として扱います。
コード:Box<T>
Box<T>で T の代わりに String を指定すると、String だけを受け付けます。型が間違っているとコンパイル時エラーになり、実行時の予期せぬ問題は起こりません。
public class Main {
// A tiny generic container
static class Box<T> {
private T value;
void set(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
Box<String> bs = new Box<String>(); // T becomes String
bs.set("hello");
System.out.println(bs.get()); // no cast needed
// Box<Integer> bi = new Box<Integer>();
// bi.set("oops"); // would not compile: String is not Integer
}
}
コード:ダイヤモンド構文による型推論
<>(ダイヤモンド構文)を使うと、コンパイラーは右辺の型を推論します。左辺の型と互換性がなければコンパイルできないため、安全性が確保されます。
public class Main {
static class Box<T> {
private T value;
Box() {}
Box(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
// Type on the left, diamond on the right — compiler infers T
Box<Integer> a = new Box<>(123);
Box<String> b = new Box<>("hi");
System.out.println(a.get() + 1); // 124
System.out.println(b.get().toUpperCase());
}
}
境界付き型パラメーター
型境界(Bounds):一部のジェネリックメソッドでは、Comparableのような機能が必要です。例:<T extends Comparable<T>>は、Tが比較可能でなければならないことを意味します。
コード:境界付きジェネリックメソッド
ジェネリックメソッド:<T extends Comparable<T>>。Integer と String は、どちらも Comparable を実装しているため使用できます。
public class Main {
// Generic method: works for any Comparable type
static <T extends Comparable<T>> T min(T a, T b) {
return (a.compareTo(b) <= 0) ? a : b;
}
public static void main(String[] args) {
System.out.println(min(3, 7)); // Integer
System.out.println(min("apple", "banana")); // String (lexicographic)
}
}
ジェネリクスの基礎チェック
クイックチェック:Box<String>のようなジェネリクスを使う主な利点は何ですか?
まとめ
まとめ:T はプレースホルダーで、ダイヤモンド構文によって型が推論されます。型境界(extends Comparable)によって、ジェネリックメソッドを安全で強力なものにできます。
よくある質問
「ジェネリクスの基礎(T、型推論)」レッスンは無料ですか?
はい。「ジェネリクスの基礎(T、型推論)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全3レッスンが含まれています。
「ジェネリクスの基礎(T、型推論)」で何を学びますか?
ジェネリック型パラメータ T 、それによってコンパイル時の安全性が得られる理由、diamond演算子による型推論を学びます。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「ジェネリクスの基礎(T、型推論)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 実践で使うインターフェース
- ジェネリクスの基礎(T、型推論)
- ジェネリックメソッドとジェネリッククラス