본문 바로가기
프로그래밍/자바

자바 제네릭(generic)

by 밍구몬 2019. 2. 23.

Generic의 사전적 뜻을 찾아보면 포괄적인 이라는 뜻이 있다.

Generic을 사용하게 되면 컴파일할 때 컴파일러가 타입캐스팅을 해준다. 그렇기 때문에 타입만 다르고 코드의 내용이 같을 때 코드의 재사용성이 좋아진다.


제네릭 클래스 작성


class t1<T,S>{ //제네릭 클래스 t1, 타입 매게 변수 T와 S

T data;

S data2;

void set(T a,S s) {

data=a;

data2=s;

}

T getT() {

return data; //T타입의 값 리턴

}

S getS() {

return data2; //S타입의 값 리턴

}

}


public class test{

public static void main(String[] args) {

t1 t = new t1();

t.set(1,"aa");

System.out.println(t.getS());

System.out.println(t.getT());

}

}




제네릭 클래스 레퍼런스 변수 선언


제네릭 클래스의 레퍼런스 변수를 선언할 때는 다음과 같이 타입 매개 변수에 구체적인 타입을 적는다


public class test{

public static void main(String[] args) {

T1<String> ts = new T1<String>();            //<T>에 String으로 구체화

T2<Integer> ti = new T2<Integer>();         //<T>에 Integer로 구체화

}

}


구체적인 타입을 적어주게 되면 T1은 String문 다루는 클래스가 되고, T2는 int형만 다루는 클래스가 된다.


제네릭 메소드


public class test{

<T> void testMethod(T a){

System.out.println(a);

}

public static void main(String[] args) {

test t = new test();

t.testMethod("aa");

t.testMethod(100);

}

}