티스토리 뷰

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);
	}
}

 

실행 결과

최근에 올라온 글
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Total
Today
Yesterday