Java의 다중 와일드카드: 컴파일러의 혼란 풀기
질문의 코드 조각이 처음에는 혼란스러워 보일 수 있지만 기본 원칙은 매우 간단합니다. Java의 일반 유형을 준수합니다.
와일드카드의 역할
와일드카드(*)는 알 수 없는 유형을 나타냅니다. 코드 조각에서 여러 와일드카드를 사용하면 컴파일러에 불확실성이 발생합니다.
static void doNothing(List<?> list1, List<?> list2) { }
와일드카드는 서로 관련이 없으므로 doNothing을 다양한 유형의 목록(예: List
중첩된 와일드카드 및 캡처 변환
혼란은 주로 중첩된 역할에 대한 오해에서 발생합니다. 와일드카드:
static void probablyIllegal(List<List<?>> lol, List<?> list) { }
이 경우 중첩된 와일드카드 List> List
static void nowDefinitelyIllegal(List<? extends List<?>> lol, List<?> list) { }
이제 목록(List
추가 참고
위 내용은 Java의 다중 와일드카드는 일반 메소드 동작 및 유형 호환성에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!