Java(Generic)_02

2024. 11. 7. 17:43·Java/기초 내용 정리

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
'Java/기초 내용 정리' 카테고리의 다른 글
  • Java(Generic)_04
  • Java(Generic)_03
  • Java(Generic)_01
  • Java(GUI)_Layout_28
mw41817
mw41817
일생의 개발 기록 저장소
  • mw41817
    IT 개발 일지
    mw41817
    • Index (487)
      • HTML (36)
        • 기초 내용 정리 (36)
      • CSS (29)
        • 기초 내용 정리 (29)
      • JavaScript (60)
        • 기초 내용 정리 (60)
      • JQuery (38)
        • 기초 내용 정리 (38)
      • Java (232)
        • 기초 내용 정리 (232)
      • JSP (46)
        • 기초 내용 정리 (46)
      • Spring, Boot (31)
        • 기초 내용 정리 (31)
      • DB (5)
        • Oracle SQL (5)
      • Code WorkBook (6)
        • programmers (6)
        • Baekjoon (0)
      • 기타 (1)
        • 유용한 사이트 (3)
  • 전체
    오늘
    어제
  • 글쓰기 관리
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
    • 주인장 GitHub
  • 공지사항

  • 인기 글

  • 태그

    html #코딩 #프로그래밍 #기초
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
mw41817
Java(Generic)_02
상단으로

티스토리툴바