제네릭 : 즉 "매개 변수화 유형", 작동하는 데이터 유형은 매개 변수로 지정됩니다. 이 메커니즘을 통해 프로그래머는 컴파일 타임에 불법 유형을 감지 할 수 있습니다.
제네릭을 사용하지 않고 제네릭을 사용하는 것의 차이점
일반 코드 없음 :
import java.util.arraylist; import java.util.list; public class nogenerics {public static void main (string [] args) {list arraylist = new arraylist (); arraylist.add ( "1"); // 문자 유형 arraylist.add (1); // (int i = 0; i <arraylist.size (); i ++) {String s = (string) arraylist.get (i); // 캐스트 변환이지만 문자 유형으로 변환 할 수 없으며 컴파일 시스템에 대해서는 오류가보고되지 않았습니다.일반 코드 사용 :
import java.util.arraylist; import java.util.list; public class generics {public static void main (string [] args) {list <string> stringlist = new arraylist <string> (); list <integer> integerlist = new arraylist <> (); // StringList.Add ( "1")를 단순화합니다. //stringlist.add(1); // 컴파일 오류, 문자 유형 만 integerlist.add (1)를 추가 할 수 있습니다. //integerlist.add("1 "); // 컴파일 오류, (int i = 0; i <stringlist.size (); i ++) {String S = StringList.get (i); system.out.println (s);} for (int j = 0; j <integerlist.size (); j ++) {int i = integerlist.get (j); system.out.println (i);}}}참고 : JDK 버전에서 <string> list = new ArrayList <string> (); list <string> stringList = new ArrayList <> ()로 약칭 할 수 있습니다.
제네릭의 장점 :
1. 안전성; 예를 들어 List <string>은 문자열 유형 만 삽입 할 수 있으며 간단히 제한 유형으로 넣을 수 있습니다.
2. 캐스팅을 제거하십시오. 코드를 더 읽기 쉽게 만들고 오류 가능성을 줄입니다.
3. 잠재적 성능 혜택; 제네릭은 더 큰 최적화를위한 가능성을 가져옵니다. 제네릭이없는 경우 프로그래머는 이러한 캐스트를 지정합니다.
알아채다:
1. 일반 유형의 유형 매개 변수는 간단한 유형이 아닌 클래스 유형 (사용자 정의 클래스 포함) 일 수 있습니다. 예를 들어 List <string, person>
2. List <String, Integer>와 같은 제네릭에 대한 여러 유형 매개 변수가있을 수 있습니다.