1. 제네릭(Generic)이란?
📌제네릭(Generic): 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법으로 자료형(데이터 타입)을 결정짓지 않고 틀을 만들어 두는 것 (java 1.5 이상)
- 한 마디로 특정(Specific) 타입을 미리 지정해주는 것이 아니라 필요에 의해서 지정할 수 있도록 하는 일반(Generic) 타입을 이야기합니다.
- 형태: Object(참조형 타입) 자리에 T가 들어가는 형식
public class ClassName <T> { ... }
public Interface InterfaceName <T> { ... }
public class MultiGeneric <K, V> { ... }
- 이때 T, K, V 타입은 해당 블록 {...} 안에서만 유효
2. 아래가 돌아 가도록 짜시오.
Box<Apple> aBox = new Box<Apple>();
Box<Orange> oBox = new Box<Orange>();
aBox.set(new Apple());
oBox.set(new Orange());
Apple ap = aBox.get();
Orange og = oBox.get();
System.out.println(ap);
System.out.println(og);
package drivertest;
class Apple {
@Override
public String toString() {
return "이것은 사과입니다.";
}
}
class Orange {
@Override
public String toString() {
return "이것은 오렌지입니다.";
}
}
class Box<T> {
private T ob;
public void set(T o) {
ob = o;
}
public T get() {
return ob;
}
}
public class overrideTest7 {
public static void main(String[] args) {
Box<Apple> aBox = new Box<Apple>();
Box<Orange> oBox = new Box<Orange>();
aBox.set(new Apple());
oBox.set(new Orange());
Apple ap = aBox.get();
Orange og = oBox.get();
System.out.println(ap);
System.out.println(og);
}
}
- 출력결과
3. 아래가 돌아 가도록 짜시오.
Person2<String, Integer> p = new Person2<String, Integer>();
p.set("홍길동", 25);
System.out.println(box);
package drivertest;
class Person2<L, R> {
private L left;
private R right;
public void set(L o, R r) {
left = o;
right = r;
}
@Override
public String toString() {
return left + " " + right + "세 입니다.";
}
}
public class overrideTest7 {
public static void main(String[] args) {
Person2<String, Integer> p = new Person2<String, Integer>();
p.set("홍길동", 25);
System.out.println(p);
}
}
- 출력결과