[Java] Generic
- BACKEND/Java
- 2017. 10. 27. 15:43
● 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 |