일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- java기초
- 데이터베이스
- 패캠챌린지
- 국비
- 재택근무
- linux
- 직장인인강
- javabasic
- String
- 스프링
- Spring
- ncs
- DB
- 디자인
- 자바
- 직장인자기계발
- 자바기본
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online강의
- js
- 패스트캠퍼스후기
- 자바연습문제
- 디자인패턴
- 자바기초
- java
- 패스트캠퍼스
- 자바예제
- 웹
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online
- DesignPattern
- 리눅스
Archives
- Today
- Total
FIF's 코딩팩토리
[Java] 제네릭(Generic) 사용 예 본문
반응형
Box클래스
public class Box {
private Object obj;
public void setObj(Object obj){
this.obj = obj;
}
public Object getObj(){
return obj;
}
}
BoxExam 클래스
public class BoxExam {
public static void main(String[] args) {
Box box = new Box();
box.setObj(new Object());
Object obj = box.getObj();
box.setObj("hello");
String str = (String)box.getObj();
System.out.println(str);
box.setObj(1);
int value = (int)box.getObj();
System.out.println(value);
}
}
- Box는 매개변수로 Object를 하나 받아들이고, Object를 반환한다.
- Object를 받아들일 수 있다는 것은 Object의 후손이라면 무엇이든 받아들일 수 있다는 것이다.
Java5에는 Generic이라는 문법이 사용됨으로써 인스턴스를 만들때 사용하는 타입을 지정하는 문법이 추가
Generic을 이용하여 Box 클래스 수정
public class Box<E> {
private E obj;
public void setObj(E obj){
this.obj = obj;
}
public E getObj(){
return obj;
}
}
- 클래스 이름 뒤에 <E>가 제네릭을 적용한 것이다. Box는 가상의 클래스 E를 사용한다는 의미.
- Object를 받아들이고, 리턴하던 부분이 E로 변경. E는 실제로 존재하는 클래스는 아니다.
Generic을 이용하여 수정한 Box를 이용하는 BoxExam클래스
public class BoxExam {
public static void main(String[] args) {
Box<Object> box = new Box<>();
box.setObj(new Object());
Object obj = box.getObj();
Box<String> box2 = new Box<>();
box2.setObj("hello");
String str = box2.getObj();
System.out.println(str);
Box<Integer> box3 = new Box<>();
box3.setObj(1);
int value = (int)box3.getObj();
System.out.println(value);
}
}
- 참조타입에 <Object> , <String>, <Integer>가 있는 것을 볼 수 있다.
- 첫번째는 Object를 사용하는 Box를 인스턴스로 만들겠다는 의미
- 두번째는 String을 사용하는 Box인스턴스를 만들겠다는 의미
- 세번째는 Integer를 사용하는 Box인스턴스를 만든다는 의미
Generic을 사용함으로써 선언할때는 가상의 타입으로 선언하고, 사용시에는 구체적인 타입을 설정함으로써 다양한 타입의 클래스를 이용하는 클래스를 만들 수 있다. Generic을 사용하는 대표적인 클래스는 컬렉션 프레임워크와 관련된 클래스이다.
반응형
'Back-End > Java(자바)' 카테고리의 다른 글
[Java] String format 예제 (0) | 2019.11.26 |
---|---|
[Java] Set (0) | 2019.11.07 |
[Java]String 클래스의 문제점 (0) | 2019.11.07 |
[Java] 프로그램 실행 시간 측정 (0) | 2019.11.07 |
스트링버퍼 클래스 (0) | 2019.11.05 |
Comments