>Java >Java시작하기 >Java 제네릭에서 T와 ?의 차이점

Java 제네릭에서 T와 ?의 차이점

王林
王林원래의
2020-01-15 16:28:175953검색

Java 제네릭에서 T와 ?의 차이점

T는 유형을 나타냅니다.

클래스에 추가:

class SuperClass<A>{}

메소드에 추가:

public <T>void fromArrayToCollection(T[] a, Collection<T> c){}

(무료 학습 비디오 튜토리얼 공유: #🎜🎜 #java 비디오 튜토리얼)

메서드의 8742468051c85b06f0a0af9e3e506b5c는 일반 매개변수가 대괄호에 사용된다는 의미입니다. 클래스에 일반 매개변수를 전달할 필요가 없습니다. 호출 유형 위의 제네릭 매개변수의 경우 메서드에 사용된 제네릭이 클래스에 전달된 제네릭과 일치한다는 전제가 있습니다.

class People<T>{
public void show(T a) {
   }
}

T T2 확장은 전달된 매개변수가 T2 또는 T2의 하위 유형임을 의미합니다.

?은 모든 유형을 나타내는 와일드카드 문자입니다.

은 일반적으로 참조 변수를 정의하는 데 사용됩니다. 이 방법의 장점은 아래와 같이 sup 참조 변수를 정의하면 여러 개체를 가리킬 수 있다는 것입니다.

SuperClass<?> sup = new SuperClass<String>("lisi");
sup = new SuperClass<People>(new People());
sup = new SuperClass<Animal>(new Animal());

?를 사용하지 않고 고정 유형을 사용하는 경우:

SuperClass<String> sup1 = new SuperClass<String>("lisi");
SuperClass<People> sup2 = new SuperClass<People>("lisi");
SuperClass<Animal> sup3 = new SuperClass<Animal>("lisi");

이것이 ?의 이점입니다.

추천 관련 기사 및 튜토리얼:

java 입문 튜토리얼

위 내용은 Java 제네릭에서 T와 ?의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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