>Java >java지도 시간 >일반 메서드의 여러 와일드카드가 다른 유형을 참조할 수 있습니까?

일반 메서드의 여러 와일드카드가 다른 유형을 참조할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-06 14:18:15713검색

Can Multiple Wildcards in Generic Methods Refer to Different Types?

일반 메서드의 여러 와일드카드

질문: 일반 메서드의 서로 다른 와일드카드가 완전히 다른 유형을 참조할 수 있습니까? 중첩된 와일드카드는 어떻게 작동하나요? 어떻게 행동하시겠습니까?

답변:

중첩된 와일드카드는 여러 개의 와일드카드가 아니라 혼란의 원인입니다.

  • 중첩된 와일드카드: 목록> List>가 아닙니다. Java 제네릭은 불변이기 때문에 List 은 List가 아닙니다. 마찬가지로, List> List>가 아닙니다.
  • 일반 메서드의 와일드카드:

    • 일반 메서드의 관련되지 않은 여러 와일드카드가 허용됩니다. , 예: List 목록1, 목록 list2.
    • 그러나 list1의 addAll(list2) 메소드는 ?에 의해 캡처된 일반 유형이므로 허용됩니다. 두 목록 모두 다를 수 있습니다.
    • 와일드카드에 명시적인 상한이 있는 경우(예: ? 확장 목록>) 추가 제한 사항이 적용됩니다.

스니펫 설명:

  • LOLUnknowns1: 아마도Illegal이 List를 추가합니다. List> ㅋㅋㅋ. 이것은 ? 목록에서 모든 유형을 참조할 수 있지만 List> 모든 유형의 목록을 포함할 수 있습니다.
  • LOLUnknowns1a: 동일한 ? List 유형의 경우 중첩된 와일드카드에 대한 캡처 변환 규칙이 단일 ? 두 목록 모두에 적용됩니다.
  • LOLUnknowns1b: 하나의 인수가 명시적으로 null인 경우 null은 모든 일반 유형에 적용 가능하고 캡처 변환에 참여하지 않으므로 컴파일이 성공합니다.
  • DoubleLOL: 두 개의 List> 캡처 변환이 재귀적으로 적용되지 않기 때문에 인스턴스가 허용됩니다. 즉, ? 각 목록에서 다양한 유형을 참조할 수 있습니다.
  • IntoTheWild: 목록 만들기> List> 캡쳐 변환은 재귀적으로 적용되지 않기 때문에 허용되지 않습니다.
  • IntoTheWild2: 캡쳐 변환은 내부 목록 유형에 적용할 수 없으므로 List> 은 List>가 아닙니다.

요약하면 일반 메서드의 여러 와일드카드는 알 수 없는 유형을 처리할 때 유연성을 허용하는 반면 중첩된 와일드카드에는 캡처 변환과 관련된 특정 제한 사항이 있습니다.

위 내용은 일반 메서드의 여러 와일드카드가 다른 유형을 참조할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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