0Pricing
Dart Academy · レッスン

ジェネリッククラスとジェネリックメソッド

独自の型をパラメーター化する

「ジェネリッククラスとジェネリックメソッド」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。

独自のジェネリクス

Listのような組み込み型はジェネリックですが、自分でジェネリックを作ることもできます。型パラメーターを使うと、クラスを呼び出し側が選んだ型に適応させられます。🧩

型パラメーターに名前を付ける

クラス名の後ろに山かっこを付けて、型パラメーターを追加します。Tという文字は、実際の型を表す一般的なプレースホルダーです。

class Box<T> {
  T value;
  Box(this.value);
}

Tを内部で使う

クラスの内部では、Tは通常の型名と同じように扱われます。クラス本体全体で、フィールド、パラメーター、戻り値に使用できます。

class Box<T> {
  T value;
  Box(this.value);
  T get() => value;
}

型を具体化する

オブジェクトを作成するときに、実際の型を選びます。ここではTがintになるため、このボックスには整数だけを格納できます。

var b = Box<int>(42);
int n = b.get();

Dartに推論させる

多くの場合、Dartが引数から型を読み取るため、型を明示する必要はありません。型推論がStringを検出し、Tを自動的に設定します。

var b = Box('hi');

複数の型パラメーター

クラスは、カンマで区切って複数の型パラメーターを受け取れます。異なる2つの型を保持するペアは典型的な例です。

class Pair<A, B> {
  A first;
  B second;
  Pair(this.first, this.second);
}

ジェネリックメソッド

ジェネリックではないクラスの中でも、1つのメソッドだけをジェネリックにできます。型パラメーターは、パラメーターリストの直前に記述します。

T firstOf<T>(List<T> items) => items[0];

メソッドでも型を推論する

ジェネリックメソッドは通常、渡された引数から型を推論します。通常どおり呼び出せば、Dartが残りを判断します。

var n = firstOf([1, 2, 3]);
var s = firstOf(['a', 'b']);

型安全性を取り戻す

メソッドがTを追跡するため、結果も正しい型を保ちます。Stringのリストに対するfirstOfは、キャストなしでStringを返します。

String x = firstOf(['a', 'b']);

再利用でき、重複しない

1つのジェネリック定義で、コピー&ペーストした複数のバージョンを置き換えられます。ロジックを一度書けば、int、String、カスタム型のいずれにも使えます。

わかりやすい名前を選ぶ

T、E、Kのような1文字の名前は慣例的ですが、説明的な名前にすると理解しやすくなる場合があります。複雑なコードでは、短さより明確さが重要です。

理解度チェック

クラスでは、型パラメーターをどこに記述しますか?

まとめ

自分で作るクラスやメソッドに、Tのような型パラメーターを追加する方法を学びました。Dartは多くの場合、型推論によって値を補完し、コードの再利用性と安全性を保ちます。✅

よくある質問

「ジェネリッククラスとジェネリックメソッド」レッスンは無料ですか?

はい。「ジェネリッククラスとジェネリックメソッド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。

「ジェネリッククラスとジェネリックメソッド」で何を学びますか?

独自の型をパラメーター化する ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Dart Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ジェネリッククラスとジェネリックメソッド」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDart Academyレッスンでコードを書いて実行できますか?

はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Genericsがdynamicより優れている理由
  2. ジェネリッククラスとジェネリックメソッド
  3. extendsによる境界付き型パラメーター
  4. ジェネリックコレクションの実践
← Dart Academyに戻る