JAVA/이론
[JAVA] 제네릭 ( Generic ) <>
printf100
2019. 12. 3. 17:57
제네릭 ( Generic ) 이란 ?
-
다양한 타입의 객체들을 다루는 클래스, 메소드의 타입을 미리 명시하는 것
-
의도치 않은 타입의 객체가 저장되는 것을 막음으로써 에러 발생확률을 낮추기 위해 사용합니다.
-
객체 타입을 컴파일 시에 체크하기 때문에 안정성을 높이고, 형변환의 번거로움을 줄입니다.
예제 1
package com.generic;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MTest {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(5);
//list.add("1"); // 컴파일 에러!
list.add(2);
//list.add("c"); // 컴파일 에러!
list.add(3);
System.out.println(list);
Collections.sort(list); // 컬렉션 정렬
System.out.println(list);
}
}

예제 2
Emp.java
package com.generic;
// <T> : Type
// <E> : Element
// <K> : Key
// <V> : Value
public class Emp<T> {
private T empno;
private String ename;
public Emp() {
}
public Emp(T empno, String ename) {
this.empno = empno;
this.ename = ename;
}
public T getEmpno() {
return empno;
}
public void setEmpno(T empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
@Override
public String toString() {
return "[ " + empno + " ] " + ename;
}
}
MTest.java
package com.generic;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MTest {
public static void main(String[] args) {
Emp<String> samsong = new Emp<String>();
samsong.setEname("홍길동");
samsong.setEmpno("dev0015");
Emp<Integer> ig = new Emp<Integer>(19019, "이순신");
Emp kp = new Emp("abcd", "김선달");
System.out.println(samsong);
System.out.println(ig);
System.out.println(kp);
}
}
