>  기사  >  Java  >  Java 함수 제네릭을 사용하여 유형 안전성을 달성하는 방법은 무엇입니까?

Java 함수 제네릭을 사용하여 유형 안전성을 달성하는 방법은 무엇입니까?

PHPz
PHPz원래의
2024-04-26 16:42:01962검색

일반 함수는 유형 매개변수를 사용하여 함수의 재사용성과 유형 안전성을 향상시키며, 이를 통해 다양한 유형의 매개변수를 허용하는 함수를 정의할 수 있습니다. 유형 매개변수에 대한 경계를 지정하여 특정 유형을 서브클래싱하거나 특정 인터페이스를 구현하도록 할 수 있습니다. 컴파일러는 일반적으로 유형 매개변수를 유추할 수 있으며 호출 사이트에서 매개변수의 실제 유형을 지정하는 경우 이를 명시적으로 선언할 필요가 없습니다. 일반 함수는 다양한 문제를 해결하는 데 사용할 수 있습니다. 예를 들어 일반 함수는 Comparable 인터페이스를 구현하는 한 목록의 요소 유형에 관계없이 목록에서 가장 큰 요소를 찾을 수 있습니다.

如何使用 Java 函数泛型实现类型安全?

Java 함수 제네릭으로 유형 안전성 달성

함수 제네릭은 다양한 유형의 매개변수를 허용하는 함수를 정의할 수 있는 강력한 메커니즘입니다. 이를 통해 코드 재사용성과 유형 안전성이 향상됩니다.

Syntax

유형 매개변수를 지정하려면 꺾쇠괄호(87a288dd01dd4e56dfc6fb1912fca6c6)를 사용하세요.

<T> T max(T a, T b) {
    // ...
}

일반 유형 경계

유형 매개변수에 경계를 지정하여 특정 유형의 하위 클래스이거나 특정 인터페이스 구현:

<T extends Number> T sum(List<T> numbers) {
    // ...
}

유형 추론

컴파일러는 일반적으로 유형 매개변수를 추론할 수 있습니다. 호출 사이트에서 매개변수의 실제 유형을 지정하는 경우 유형 매개변수를 명시적으로 선언할 필요가 없습니다.

Integer result = max(1, 2); // 编译器推断类型是 Integer

실제 예

목록에서 가장 큰 요소를 찾는 함수를 작성한다고 가정해 보세요. :

<T extends Comparable<T>> T findMax(List<T> list) {
    if (list.isEmpty()) {
        throw new IllegalArgumentException("List is empty");
    }

    T max = list.get(0);
    for (T element : list) {
        if (element.compareTo(max) > 0) {
            max = element;
        }
    }

    return max;
}

이 일반 함수는 Comparable 인터페이스를 구현하는 모든 유형을 허용하여 요소를 비교하고 가장 큰 요소를 찾을 수 있도록 보장합니다.

다음 코드에서 이 함수를 사용할 수 있습니다.

List<Integer> numbers = List.of(1, 2, 3, 4, 5);
Integer maxNumber = findMax(numbers); // 类型推断为 Integer

List<String> words = List.of("apple", "banana", "cherry");
String maxWord = findMax(words); // 类型推断为 String

함수 제네릭을 사용하면 코드의 다양성이 보장되고 유형 안전성이 향상됩니다. 이렇게 하면 유형 오류가 방지되고 코드가 더욱 강력해집니다.

위 내용은 Java 함수 제네릭을 사용하여 유형 안전성을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.