>Java >java지도 시간 >Java Generics에서 언제, 왜 ``를 사용합니까?

Java Generics에서 언제, 왜 ``를 사용합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-27 16:00:14978검색

When and Why Use `` in Java Generics?

Java의 제네릭: 를 사용하는 시기와 방법

Java에서 제네릭을 사용하면 개발자는 별도의 작업 없이도 다양한 데이터 유형에 대해 작동하는 코드를 작성할 수 있습니다. 동일한 코드의 여러 버전을 생성합니다. 제네릭을 사용할 때 사용 간의 차이점을 이해하는 것이 중요합니다. 및 .

사용 시기 일반 유형 매개변수가 지정된 유형의 하위 유형일 수 있음을 나타냅니다. 예를 들어, 아래 코드에서는

Map<String, Class<? extends Serializable>> expected = null;

예상 맵은 직렬화 가능을 구현하는 모든 클래스 또는 해당 하위 클래스를 나타내는 클래스 객체를 보유할 수 있습니다.

컴파일 오류가 발생합니까?

제공된 예에서:

Map<String, Class<java.util.Date>> result = null;
assertThat(result, is(expected));

결과 맵은 Date 클래스 객체만 보유할 수 있다고 지정합니다. 결과 유형을 확인할 때 AssertThat 메소드는 결과 유형에 맞는 Matcher를 기대합니다. 그러나 예상되는 맵 유형인 Matcher가 예상되는 유형인 Map

assertThat 메소드 시그니처를 로 변경하는 경우의 단점 다음을 포함하여 의도하지 않은 결과가 발생할 수 있습니다.

  • Matcher를 사용하는 기존 코드와의 호환성 중단
  • 잘못된 일치가 발생할 가능성이 있습니다.

assertThat 메소드 일반화

JUnit에서 AssertThat 메소드의 일반화는 호환 가능한 Matcher를 보장하도록 설계되었습니다. 제공됩니다. 그러나 Matcher 클래스에는 제네릭 유형이 필요하지 않으므로 일반화가 중복된 것처럼 보일 수 있습니다. 그러나 Matcher가 테스트 중인 결과의 실제 유형을 처리할 수 있도록 보장하여 유형 안전성을 제공합니다.

위 내용은 Java Generics에서 언제, 왜 ``를 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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