ホームページ > Java > &#&チュートリアル > ジェネリック医薬品の使用制限

ジェネリック医薬品の使用制限

Barbara Streisand
リリース: 2024-12-30 21:25:14
オリジナル
423 人が閲覧しました

Restrições ao Uso de Genéricos

Java のジェネリックスは柔軟性とセキュリティを提供しますが、いくつかの重要な制限があります。これらには、型パラメータ、静的メンバー、ジェネリック配列、およびジェネリック例外のインスタンス化が含まれます。

1.型パラメータのインスタンス化

  • 型パラメータから直接インスタンスを作成することはできません。

無効な例:

class Gen<T> {
    T ob;

    Gen() {
        ob = new T(); // Inválido!
    }
}

ログイン後にコピー
  • 理由: コンパイラーは、実際の型 T が単なるプレースホルダーであるため、それが何を表すのかを知りません。
  • 回避策: オブジェクト ファクトリを使用するか、すでに作成されたインスタンスを引数として受け取ります。

2.静的メンバーの制限
静的メンバーは外部クラスのジェネリック型パラメーターを使用できません。

無効な例:

class Wrong<T> {
    static T ob;          // Inválido!
    static T getob() {    // Inválido!
        return ob;
    }
}

ログイン後にコピー

理由: 静的コンテキストはクラスのすべてのインスタンス間で共有されますが、ジェネリック パラメーターはインスタンスごとに異なる場合があります。
回避策: 独自の型パラメータを定義する静的メソッドを宣言します:

static <U> U genericMethod(U value) {
    return value;
}

ログイン後にコピー

3.汎用配列
配列とジェネリックを使用した制約:

  • ジェネリック型配列をインスタンス化することはできません。
T vals[];        // Válido como referência
vals = new T[10]; // Inválido!

ログイン後にコピー
  • 型固有の汎用参照配列を作成することはできません
Gen<Integer> gens[] = new Gen<Integer>[10]; // Inválido!

ログイン後にコピー

理由: 実行中に消去により型情報が削除されるため、安全な配列を作成できなくなります。
回避策:

既存の配列を使用します:

vals = nums; // Atribuir array existente é válido.

ログイン後にコピー
  • ワイルドカードを使用する
Gen<?> gens[] = new Gen<?>[10]; // Correto.

ログイン後にコピー

4.一般的な例外
ジェネリック クラスは Throwable を拡張できません。
無効な例:

class GenException<T> extends Exception { // Inválido!
    T value;
}

ログイン後にコピー

理由: これにより、実行時の例外処理メカニズムが侵害される可能性があります。
解決策: 通常のジェネリック クラスを使用して情報をカプセル化し、それらを標準例外と統合します。

5.制限事項の概要
型パラメータのインスタンス化: 直接インスタンス化することはできませんが、既存のインスタンスを使用できます。
静的メンバー: 外部クラスのジェネリック型は使用できませんが、静的メソッドは独自のジェネリック パラメーターを定義できます。
汎用配列: 直接インスタンス化することはできませんが、ワイルドカードを使用した汎用参照は許可されます。
一般的な例外: 作成できませんが、通常のクラスを使用してシミュレートできます。

これらの制限を理解することは、Java で安全かつ効率的なジェネリック クラスを設計するために不可欠です。

以上がジェネリック医薬品の使用制限の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート