2024-11-07



사과입니다~~~
연필입니다~~~
package generic;
public class Goods {
Object object;
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
}
package generic;
public class Goods_02 {
public static void main(String[] args) {
Goods goods1 = new Goods();
goods1.setObject(new Apple());
Apple apple = (Apple)goods1.getObject();
apple.output();
System.out.println();
Goods goods2 = new Goods();
goods2.setObject(new Pencil());
Pencil pencil = (Pencil)goods2.getObject();
pencil.output();
System.out.println();
/*
* 데이터를 저장할 때는 상관이 없지만, 저장된 데이터를
* 각각의 타입(Apple, Pencil)을 꺼내오기 위해서는
* 저장된 형태로 캐스팅(형변환)을 해야 함. 필드 자체가
* Object 타입이기 때문에 get() 메서드로 가져오는 타입
* 또한 항상 Object 타입임.
* 따라서 Apple 객체를 저장했을 때에는 get() 메서드로
* 가져온 Object 타입을 Apple 타입으로, Pencil 객체를
* 저장했을 때에는 가져온 Object 타입을 Pencil 객체
* 타입으로 형변환을 해 주어야 함.
* 정확하게 해당 객체 타입으로 형변환을 해 주는 경우에는
* 문제가 발생하지 않지만, 다른 객체 타입으로 형변환을
* 해 주게 되면 실행 중에 예외(ClassCastException)가
* 발생할 수 있음.
* 이렇게 되면 정상적으로 프로그램이 종료되지 않는 문제가
* 발생할 수 있음.
* 이러한 형변환 작업이 자주 일어나게 되면 프로그램의
* 성능이 저하 될 수가 있음.
* 이러한 문제점을 해결하는 것이 바로 제네릭(generic)임.
*/
}
}'Java > 기초 내용 정리' 카테고리의 다른 글
| Java(Generic)_04 (0) | 2024.11.07 |
|---|---|
| Java(Generic)_03 (0) | 2024.11.07 |
| Java(Generic)_01 (0) | 2024.11.07 |
| Java(GUI)_Layout_28 (0) | 2024.11.06 |
| Java(GUI)_Layout_27 (0) | 2024.11.06 |