ホームページ > Java > &#&チュートリアル > ダイヤモンド演算子による型推論

ダイヤモンド演算子による型推論

Susan Sarandon
リリース: 2024-12-31 13:11:14
オリジナル
207 人が閲覧しました

Inferência de Tipos com o Operador Losango

1.ダイヤモンドオペレーターの紹介

  • ジェネリック クラスのインスタンスを作成する際の冗長性を軽減するために、JDK 7 で導入されました。
  • コンパイラがコンテキストからジェネリック型を推測できるようにし、型引数を繰り返す必要がなくなります。

2. JDK 7 より前の宣言例

// Classe genérica com dois tipos
class TwoGen<T, V> {
    T ob1;
    V ob2;

    TwoGen(T o1, V o2) {
        ob1 = o1;
        ob2 = o2;
    }
}

// Criação de uma instância antes do JDK 7
TwoGen<Integer, String> tgOb = new TwoGen<Integer, String>(42, "testing");

ログイン後にコピー

欠点: ジェネリック型は宣言とインスタンス作成の両方で繰り返す必要があります。

。 JDK 7 でひし形演算子を使用する

// Criação de uma instância usando o operador losango
TwoGen<Integer, String> tgOb = new TwoGen<>(42, "testing");

ログイン後にコピー

演算子<>変数宣言 (TwoGen) に基づいて型引数を推論するようにコンパイラーに要求します。

4.一般形式
ジェネリック クラスのインスタンスを作成するための一般的な構文:

nome-classe<lista-arg-tipo> nome-var = new nome-classe<>(lista-arg-cons);

ログイン後にコピー

例:

TwoGen<Double, Boolean> example = new TwoGen<>(3.14, true);
ログイン後にコピー

5.メソッドでの推論
型推論は、ジェネリック クラスをパラメーターとして受け取るメソッドに対しても機能します。
例:

// Adicionado à classe TwoGen
boolean isSame(TwoGen<T, V> o) {
    return ob1 == o.ob1 && ob2 == o.ob2;
}

// Chamando o método usando o operador losango
if (tgOb.isSame(new TwoGen<>(42, "testing"))) {
    System.out.println("Same");
}

ログイン後にコピー

新しい TwoGen<>(...) パラメータの型は自動的に推測されます。

6. Losango オペレーターの利点
冗長性の削減: 多くの型パラメータを持つジェネリック クラスに特に役立ちます。
読みやすさ: 複雑なステートメントを簡素化します。

7.互換性
ダイヤモンド演算子は、JDK 7 より前の Java バージョンでは機能しません。
古い書籍やコードの例では、ジェネリックスをサポートするすべての Java コンパイラとの互換性を維持するために完全な構文が使用されています。

8.良い実践方法
JDK 7 をサポートするプロジェクトでダイヤモンド演算子を使用すると、コードが最適化され、読みやすくなります。
わかりやすくするために、学習例または従来のプロジェクトでは完全な構文を使用することを推奨します。

以上がダイヤモンド演算子による型推論の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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