Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Kim Hyeong

14 Generic 본문

java 공부

14 Generic

김형완 2018. 8. 10. 10:01

************************

다시 공부할 필요가 있음

************************

 

 

Generic

- 클래스내부에서 사용할 데이터 타입을 외부에서 지정하는 방법

ex) class Demo<T>{ //T = 데이터 type

public T data;

}

//메인

Demo<String> d1 = new Demo<String>(); //String 이라는 인자가 T로 들어감

Demo<Integer> d2 = new Demo<Integer>();

 

jdk 1.5ver

사용 이유 : 타입의 안전성 제공 타입체크 형변환 생략가능 코드 간결

 

실행

class GenericDemo <T>{

public T data;

 

public void setData(T data){

this.data = data;

}

public T getData() {

return data;

}

}

public class GenericDemo1 {

public static void main(String[] args) {

GenericDemo<Integer> gd = new GenericDemo<Integer>();

gd.setData(new Integer(200));

System.out.println("gd = "+gd.getData());

 

GenericDemo<String> gd1 = new GenericDemo<String>();

gd1.setData("하이자바");

System.out.println("gd1 = "+gd1.getData());

}

}

실행결과

gd = 200

gd1 = 하이자바

 

인스턴스를 생성을 할 때 들어오는 각각의 데이터 타입을 가지고 맘대로 지정을 해서 형성이 가능하다.

그래서 형변환이 필요 없이 객체를 생성할 때 각각의 데이터 타입을 지정을 해서 다양하게 만들 수 있다. 클래스에 데이터 타입을 지정을 할 때 엄격해져서 타입의 안정성이 올라가고 코드 또한 간결해진다.

 

복수개의 Genetic

 

class Person <T,E>{

public T data;

public E id;

Person(T data, E id){

this.data = data;

this.id = id;

}

}

public class GenericEx2 {

//A <T> a = new A <T> (new T(@@@));

public static void main(String[] args) { //A<T,T1> G = new A<T,T1>(new T(@@),new T1(##));

Person <StudentData, Integer> p2 =

new Person<StudentData, Integer>(

new StudentData("홍길동"), new Integer(20140002));

System.out.println(p1.data.name +": "+p1.id);

}

}

 

Generic 제한

 

데이타의 클래스로 제한 T라고 하는 타입은 Data의 자식클래스만 쓰게 제한

논리적인 오류를 막아주는 결과

컴파일 오류를 대비하기 위해 제한을 두는 것

'java 공부' 카테고리의 다른 글

15 Collections FrameWork  (0) 2018.08.10
13 enum 클래스  (0) 2018.08.10
12 wrapper 클래스  (0) 2018.08.10
11 object Class  (0) 2018.08.10
10 예외처리  (0) 2018.08.10
Comments