検索
ホームページJava&#&チュートリアルJava 関数の汎用ワイルドカード: 上限と下限

Java では、汎用ワイルドカードを使用して、特定の型を指定せずに汎用型を表すことができます。上限のワイルドカード文字 ( extends T>) は型パラメータ T またはそのサブクラスを表し、サブクラス データをリスト内で受け入れることができます。下部のワイルドカード文字 ( super T>) は T またはそのスーパークラスを表し、リスト内のスーパークラス データを受け入れることができます。ワイルドカードを使用すると、ジェネリックスを使用してサイズ変更可能な配列リストを実装でき、さまざまな型や追加/削除操作を処理できるようになります。

Java 函数中的泛型通配符:上限和下限

Java 関数のジェネリック ワイルドカード: 上限と下限

Java では、ワイルドカードを使用してジェネリック型を表すことができ、具体的な型を指定せずにジェネリックを使用できるようになります。この記事では、上位および下位のワイルドカードについて説明し、実際の例を通じてその使用法を示します。

キャップ付きワイルドカード

キャップ付きワイルドカード ( extends T>) は、型パラメーター T またはそのサブクラスのいずれかを表します。例: extends T>) 表示类型参数 T 或其任何子类。例如:

public static <T extends Number> double sum(List<T> numbers) {
  double total = 0;
  for (T num : numbers) {
    total += num.doubleValue();
  }
  return total;
}

此函数可以接受任何 Number (如 Integer、Double) 或其子类的列表。我们可以安全地将任何满足 Number 约束的列表传递给此函数,如下所示:

List<Integer> ints = List.of(1, 2, 3);
double sumIntegers = sum(ints); // 编译通过

下限通配符

下限通配符 ( super T>) 表示类型参数 T 或其任何超类。例如:

public static <T super Number> void process(List<T> entities) {
  for (T entity : entities) {
    System.out.println(entity.getClass().getName());
  }
}

此函数可以接受任何 Number 的超类 (如 Object、Serializable) 的列表。我们可以安全地将任何满足 Number 超类约束的列表传递给此函数,如下所示:

List<Object> objects = List.of("Hello", 123);
process(objects); // 编译通过

实战案例

考虑一个可调整大小的数组列表,我们可以使用泛型通配符来实现它:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ResizableArrayList<E> {

  private List<E> list;

  public ResizableArrayList() {
    this(new ArrayList<>());
  }

  public ResizableArrayList(List<? super E> initialList) {
    list = new ArrayList<>(initialList);
  }

  public void addAll(List<? extends E> elements) {
    list.addAll(elements);
  }

  public void removeAll(List<? super E> elements) {
    list.removeAll(elements);
  }

  public List<E> getList() {
    return list;
  }

  public static void main(String[] args) {
    ResizableArrayList<Integer> numbers = new ResizableArrayList<>(
        Arrays.asList(1, 2, 3)
    );
    numbers.addAll(Arrays.asList(4, 5, 6));
    numbers.removeAll(Arrays.asList(2, 3));

    System.out.println(numbers.getList()); // [1, 4, 5, 6]
  }
}

这个可调整大小的数组列表可以处理任何类型 Errreee

この関数は、任意の数値 (Integer、Double など) またはそのサブクラスのリストを受け入れることができます。次のように、Number 制約を満たす任意のリストをこの関数に安全に渡すことができます: 🎜rrreee🎜🎜下位ワイルドカード🎜🎜🎜下位ワイルドカード ( super T>) は型パラメータ を表します。 T またはそのスーパークラスのいずれか。例: 🎜rrreee🎜 この関数は、任意の Number スーパークラス (Object、Serializable など) のリストを受け入れることができます。次のように、Number スーパークラスの制約を満たす任意のリストをこの関数に安全に渡すことができます: 🎜rrreee🎜🎜 実用的な例 🎜🎜🎜 サイズ変更可能な配列リストを考えてみましょう。それを実現するには、汎用のワイルドカードを使用できます: 🎜rrreee🎜このサイズ変更可能な配列リストは、任意の typeE を処理し、さまざまなオブジェクトをリストに追加または削除できるようにします。 🎜

以上がJava 関数の汎用ワイルドカード: 上限と下限の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール