> Java > java지도 시간 > Java Generics를 사용하여 클래스 및 인터페이스 제약 조건을 어떻게 결합할 수 있습니까?

Java Generics를 사용하여 클래스 및 인터페이스 제약 조건을 어떻게 결합할 수 있습니까?

DDD
풀어 주다: 2024-12-05 08:40:12
원래의
965명이 탐색했습니다.

How Can I Combine Class and Interface Constraints Using Java Generics?

클래스 및 인터페이스 호환성을 갖춘 Java 제네릭

Java에서는 특정 제약 조건이 있는 클래스 객체를 생성하는 것이 어려울 수 있습니다. 일반적인 시나리오는 특정 인터페이스를 구현하는 동시에 특정 클래스를 확장하는 클래스 개체를 정의하는 것입니다. 그러나 제네릭을 사용하여 두 제약 조건을 동시에 달성하는 것은 일반적인 논쟁거리였습니다.

다음 구문을 사용하여 클래스가 ClassA를 확장하고 인터페이스 InterfaceB를 구현하도록 강제하려는 시도:

Class<? extends ClassA>
로그인 후 복사

또는

Class<? extends InterfaceB>
로그인 후 복사

하나의 요구 사항만 충족하고 결합에 실패합니다.

솔루션

다행히도 Java 제네릭은 다중 인터페이스 또는 클래스와 인터페이스를 허용합니다. 이를 달성하려면 다음과 같이 와일드카드 선언을 수정하십시오.

<T extends ClassA & InterfaceB>
로그인 후 복사

Sun의 Generics Tutorial에 설명된 대로 각 추가 필수 인터페이스에 & InterfaceName을 추가하면 임의로 복잡한 조합을 달성할 수 있습니다. 예를 들어, Collections#max의 JavaDoc 선언은 이러한 복잡성을 보여줍니다.

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
로그인 후 복사

바이너리 호환성을 유지하려면 이러한 복잡한 선언이 필요합니다.

클래스 및 인터페이스 제약 조건을 사용한 구현

변수 선언에서 원하는 제한을 구현하려면 변수 선언에 일반 경계를 배치하세요. class:

class classB { }
interface interfaceC { }

public class MyClass<T extends classB & interfaceC> {
    Class<T> variable;
}
로그인 후 복사

결론

Java 제네릭은 제한된 클래스와 인터페이스 조합을 생성하는 유연한 방법을 제공합니다. 개발자는 구문과 제한 사항을 이해함으로써 이 기능을 활용하여 코드에 특정 요구 사항을 적용할 수 있습니다.

위 내용은 Java Generics를 사용하여 클래스 및 인터페이스 제약 조건을 어떻게 결합할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿