Java Generics: 클래스와 인터페이스 경계 결합
Java에서 Generics는 다양한 유형의 객체에서 작동할 수 있는 유형을 정의하는 기능을 제공합니다. . 특정 인터페이스를 구현하면서 특정 클래스를 확장하도록 제한되는 클래스 객체를 생성하려고 할 때 일반적인 문제가 발생합니다.
클래스를 생성하려는 사용 사례를 고려해 보겠습니다. ClassA를 확장하고 InterfaceB를 구현하는 클래스를 나타내는 객체 인터페이스.
처음에는 다음 와일드카드를 사용해 볼 수 있습니다.
Class<? extends ClassA>
또는
Class<? extends InterfaceB>
그러나 둘 중 하나를 사용한다고 해서 두 요구 사항을 동시에 시행할 수는 없습니다.
이를 달성하는 열쇠는 와일드카드에 여러 경계를 사용하는 것입니다. 이러한 와일드카드의 구문은 다음과 같습니다.
<T extends Class & Interface>
이를 시나리오에 적용하면 다음과 같은 결과를 얻을 수 있습니다.
Class<? extends ClassA & InterfaceB>
Java Generics에 설명된 대로 자습서에서는 여러 범위를 사용하여 유형 매개변수가 지정된 클래스를 확장하고 하나 이상의 인터페이스를 구현해야 함을 지정할 수 있습니다. & 연산자를 사용하면 경계가 구분됩니다.
이 솔루션을 사용하면 목표를 달성할 수 있지만 복잡해질 수 있습니다. 예를 들어, 다음 선언이 있는 Java의 Collections#max 메소드를 생각해 보세요.
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
이 정교한 구문은 특정 유형 제약 조건을 적용하면서 바이너리 호환성을 보장합니다.
사용 사례에 따라 원하는 클래스를 사용하여 일반 클래스를 만들 수 있습니다. 경계:
public class MyClass<T extends ClassA & InterfaceB> { Class<T> variable; }
이 접근 방식을 사용하면 다음과 같이 원하는 제한 사항이 있는 변수를 만들 수 있습니다.
MyClass<ClassB>.variable
위 내용은 Java Generics에서 클래스 경계와 인터페이스 경계를 어떻게 결합할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!