찾다
Javajava지도 시간Java 함수의 일반 와일드카드: 상한 및 하한

Java에서는 일반 와일드카드를 사용하면 특정 유형을 지정하지 않고도 일반 유형을 나타낼 수 있습니다. 상한 와일드카드 문자( 확장 T>)는 유형 매개변수 T 또는 그 하위 클래스를 나타내므로 하위 클래스 데이터가 목록에서 허용될 수 있습니다. 하위 와일드카드 문자( super T>)는 T 또는 해당 수퍼클래스를 나타내며 목록의 수퍼클래스 데이터가 허용되도록 합니다. 와일드카드를 사용하면 제네릭으로 크기 조정 가능한 배열 목록을 구현하여 다양한 유형 및 추가/제거 작업을 처리할 수 있습니다.

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

Java 함수의 일반 와일드카드: 상한 및 하한

Java에서는 와일드카드를 사용하여 일반 유형을 나타낼 수 있으므로 구체적인 유형을 지정하지 않고도 제네릭을 사용할 수 있습니다. 이 기사에서는 상위 및 하위 와일드카드를 살펴보고 실제 예를 통해 사용법을 보여줍니다.

Capped 와일드카드

Capped 와일드카드(<?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) 또는 해당 하위 클래스 목록을 허용할 수 있습니다. 다음과 같이 숫자 제약 조건을 충족하는 모든 목록을 이 함수에 안전하게 전달할 수 있습니다. 🎜rrreee🎜🎜Lower wildcard🎜🎜🎜Lower wildcard( super T>)는 유형 매개변수를 나타냅니다. T 또는 해당 슈퍼클래스. 예: 🎜rrreee🎜이 함수는 모든 Number 슈퍼클래스(예: Object, Serialize) 목록을 허용할 수 있습니다. 다음과 같이 Number 슈퍼클래스 제약 조건을 충족하는 모든 목록을 이 함수에 안전하게 전달할 수 있습니다. 🎜rrreee🎜🎜 실제 예 🎜🎜🎜 크기 조정 가능한 배열 목록을 고려하면 일반 와일드카드를 사용하여 이를 달성할 수 있습니다. 🎜rrreee🎜이 크기 조정 가능한 배열 목록은 다음과 같이 할 수 있습니다. 모든 유형의E를 처리하여 목록에 다양한 개체를 추가하거나 제거할 수 있습니다. 🎜

위 내용은 Java 함수의 일반 와일드카드: 상한 및 하한의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 Hentai를 무료로 생성하십시오.

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전