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);
Object 타입의 클래스 접근시, get메서드로 가져올때 object로 가져오기 때문에 항상 사용시에는 용도에 맞게 형변환해서 사용해야 했다.
public class Box<E> {
private E obj;
public E getObj() {
return obj;
}
public void setObj(E obj) {
this.obj = obj;
}
}
Box<Object> box1 = new Box<>();
box.setObj(new Object());
Object obj1 = box.getObj();
Box<String> box2 = new Box<>();
box2.setObj("hello");
String str1 = box2.getObj();
Box<Integer> box3 = new Box<>();
box3.setObj(4);
int v2 = box3.getObj();
가상의 element를 저장하는 제네릭 타입을 사용하여 Box클래스를 정의하였다.
객체 생성시, 자료형을 포함해서 생성함으로써, 따로 형변환을 할 필요없이 유연하게 사용할 수 있게 되었다.