> Java > java지도 시간 > 본문

Java의 제네릭 사용법 요약

高洛峰
풀어 주다: 2017-01-18 11:19:58
원래의
1372명이 탐색했습니다.

이 기사의 예에서는 Java의 제네릭 사용법을 요약합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

1 기본 사용

public interface List<E> {
 void add(E);
 Iterator<E> iterator();
}
로그인 후 복사

2 Generics 및 하위 클래스

Child는 Parent의 하위 클래스이지만 List List의 하위 클래스가 아닙니다.
그러므로 List list = new ArrayList()이 잘못되었습니다.
위의 내용이 맞다면:

List<String> ls = new ArrayList<String>(); //1
List<Object> lo = ls; //2
lo.add(new Object()); // 3
String s = ls.get(0); // 4,将object转换为string将失败。
로그인 후 복사

와일드카드 3개

이유 2로 인해 다음 구현은 통합 출력에 사용할 수 없습니다. set

void printCollection(Collection<Object> c) {
 for (Object o: c) {
 // do something
 }
}
로그인 후 복사

따라서 와일드카드 ?가 필요합니다.

void printCollection(Collection<?> c) {
 for (Object o: c) { // 1
 // do something
 }
} // ok
로그인 후 복사

여기서 ?는 유형을 알 수 없지만 모든 개체가 개체이므로 위의 1을 의미합니다. 예가 맞습니다. 그러나 다음 예는 잘못되었습니다.

void add(Collection<? extends MyClass> c) {
 c.add(new MyClass()); // wrong
} // ok
로그인 후 복사

이유도 매우 명확합니다. ?extends MyClass는 유형이 MyClass의 하위 클래스이지만 특정 유형을 알 수 없음을 나타냅니다.

4. 일반 메서드

위의 예는 다음과 같이 구현할 수 있습니다.

<T> add(Collection<T> c, T t) {
 c.add(t);
}
로그인 후 복사

컴파일러는 의미 체계를 보장하면서 유형 변환을 지원합니다.

5. 제네릭 런타임 비교

List<String> l1 = new ArrayList<String>();
List<Integer> l2 = new ArrayList<Integer>();
System.out.println(l1.getClass() == l2.getClass()); // true
로그인 후 복사

제네릭 클래스의 런타임은 동일하기 때문입니다.

6개의 일반 배열(잠재적으로 유형이 안전하지 않음)

List<String>[] lsa = new ArrayList<String>[10]; // error
로그인 후 복사

가능한 경우 유형이 안전하지 않을 수 있습니다. 예:

Object o = lsa;
Object []oa = (Object[])o;
List<Integer> li = new ArrayList<Integer>();
li.add(new Integer(3));
oa[1] = li;
String s = lsa[1].get(0); // runtime error
로그인 후 복사

이 기사가 모든 사람의 Java 프로그래밍에 도움이 되기를 바랍니다.

Java의 제네릭 사용법 요약과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!