클래스 및 인터페이스 호환성을 갖춘 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!