01 Generic 제네릭
package com.generic;
class Box{
private Object ob; // Object 클래스의 ob 객체
public Object getOb() {
return ob;
}
public void setOb(Object ob) {
this.ob = ob;
}
}
public class GenericTest {
public static void main(String[] args) {
Box box = new Box();
box.setOb("제네릭");
System.out.println(box.getOb());
box.setOb(11); // 숫자가 아닌 객체
//System.out.println(box.getOb() + box.getOb());
int a = (int)(box.getOb());
System.out.println(a + a);
}
}
① 4행: Box 클래스에서 Object 클래스의 ob 객체 생성 후 getter, setter 생성
② 17행: ob 객체에 "제네릭" 대입 후 출력
③ 19행: ob 객체에 11이라는 숫자를 입력하고 싶음 하지만 ob는 숫자가 아닌 객체로 저장되므로 11+11을 할 수 없음
④ 21행: 따라서 box.getOb()를 int로 형변환 해야 함
[결과화면]
* 문자형이나 정수형을 넣을 때마다 클래스를 수정해야 하는 불편함이 있음
ex) 제네릭 사용해서 문자열, 숫자 출력하기
package com.generic;
class Box<T>{
private T ob;
public T getOb() {
return ob;
}
public void setOb(T ob) {
this.ob = ob;
}
}
public class GenericTest {
public static void main(String[] args) {
Box<String> box = new Box<String>(); // 문자열
box.setOb("홍길동");
String name = box.getOb();
System.out.println("이름: " + name);
Box<Integer> box2 = new Box<Integer>(); // 정수
box2.setOb(10); // 숫자가 아닌 객체
System.out.println("숫자 합: " + (box2.getOb() + box2.getOb()));
}
}
① 2행: <T> Generic 구조 (T: 임의변수)
② 16행: 클래스를 변경하지 않고 문자형과 정수형을 선언 가능
③ 16행, 21행: 대신 객체를 2번 만들어야 함
[결과화면]
'STUDY > Java' 카테고리의 다른 글
[JAVA] 람다식, Enum (0) | 2021.11.05 |
---|---|
[JAVA] Collection (List, Set, Map) (0) | 2021.11.05 |
[JAVA] Thread, 스레드 (0) | 2021.11.05 |
[JAVA] 예외처리 (0) | 2021.11.05 |
[JAVA] 정렬, 익명클래스 (0) | 2021.11.05 |