일반 메서드의 여러 와일드카드
질문: 일반 메서드의 서로 다른 와일드카드가 완전히 다른 유형을 참조할 수 있습니까? 중첩된 와일드카드는 어떻게 작동하나요? 어떻게 행동하시겠습니까?
답변:
중첩된 와일드카드는 여러 개의 와일드카드가 아니라 혼란의 원인입니다.
-
중첩된 와일드카드: 목록
> 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!