티스토리 뷰
제네릭 ( 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);
}
}
'JAVA > 이론' 카테고리의 다른 글
[JAVA] [ORACLE] JDBC ( Java Database Connectivity ) 의 개념과 Eclipse 연결하기 (0) | 2020.01.06 |
---|---|
[JAVA] 컬렉션 ( Collection ) Framework - List, Set, Map (0) | 2019.12.03 |
[JAVA] [OOP] 추상 클래스 ( Abstract Class ) 와 인터페이스 ( Interface ) (0) | 2019.11.28 |
[JAVA] [OOP] 상속 ( Inheritance ) 과 다형성 ( Polymorphism ) (0) | 2019.11.28 |
[JAVA] [OOP] 생성자 ( Constructor ) 에 대하여 (0) | 2019.11.27 |