[Java] Generic

● Generic

(1) 클래스와 인터페이스, 그리고 메소드를 정의할 때 타입을 파라미터로 사용할 수 있도록 한다.


(2) 컴파일 시 강한 타입 체크를 할 수 있다.


(3) 타입 변환(casting)을 제거한다.


Generic을 사용하면 실수하지 않고 안전하게 사용하는 것이 가능하다.


package Generic;


import java.util.Vector;


public class GenericTest1 {

public static void main(String[] args) {

Vector<String> v = new Vector<String>(); //<String> 제네릭 사용으로 String만 사용할수 있게 한다.

// 실시간으로 검사해서 오류체크 가능

v.add("hello");

v.add("world");

v.add("홍길동");

//...

//v.add(100); <- String 타입이 아닌 int 타입이기 때문에 에러 발생

/*

String str = null; // 인스턴스가 없을때(가르키는 주소값) null이라고 표시해준다.

for(int i = 0; i<v.size();i++) {

str = (String)v.get(i); // get이 object타입이라서 String으로 형변환해줘야한다.

System.out.println(str);

}*/

//향상된 for문

for(String str : v) { // 배열이나 리스트에 있는 값을 반복문을 돌려서 전부 출력해준다.

System.out.println(str);

}

}

}



package Generic;

// Generic 클래스 설정방법


class GenericDemo<T>{   // c++의 <Template>를 오마주함

private T value; // 데이터타입을 정해놓지 않고 값을 비워놨다가 들어오는 값의 타입을 보고 결정한다.

GenericDemo(T v){

value = v;

}

T getValue() {

return value;

}

}

public class GenericTest2 {

public static void main(String[] args) { 

//데이터 타입을 제네릭으로 명확히 표시 해주는 것이 좋다

GenericDemo<Integer> demo1 = new GenericDemo<Integer>(10);

System.out.println(demo1.getValue());

GenericDemo<Double> demo2 = new GenericDemo<Double>(3.14);

System.out.println(demo2.getValue());

GenericDemo<String> demo3 = new GenericDemo<String>("이것은 제너릭");

System.out.println(demo3.getValue());

}

}



'BACKEND > Java' 카테고리의 다른 글

[Java] 연습코딩-2  (0) 2017.10.27
[Java] 연습코딩-1  (0) 2017.10.27
[Java] Collection  (0) 2017.10.27
[Java] 인터페이스(Interface)  (0) 2017.10.26
[Java] Package  (0) 2017.10.25

댓글

Designed by JB FACTORY