Java(Generic)_03

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

2024-11-07

 

 

 

 

사과입니다~~~

연필입니다~~~

 

package generic;

/*
 *  제네릭(generic)?
 *  - 포괄적인, 총괄적인, 일반적인
 *  - 자바에서 제네릭(generic)이란 데이터의 타입(data type)을
 *    일반화한다(generalize)는 것을 의미함.
 *    ==> 즉, 자바에서 제네릭은 클래스 내부에서 사용할 데이터
 *        타입을 외부에서 지정하는 기법을 말함.
 *        객체별로 다른 타입의 자료가 저장될 수 있도록 함.
 *  - 모든 종류의 타입을 다룰 수 있도록, 클래스나 메서드를
 *    타입 매개변수(generic type)를 이용하여 선언하는 기법임.
 *  - 특정한 클래스에 원하는 객체 타입을 지정하여 지정된 객체만
 *    저장하게 하는 자바 문법.
 *  - 동일한 프로그램 코드에 다양한 데이터 타입을 적용할 수 있도록
 *    클래스와 메서드들을 일반화시켜 제네릭 메서드와 제네릭 클래스를
 *    만들고, 제네릭 메서드나 제네릭 클래스에 개발자가 원하는 데이터
 *    타입으로 구체화시켜 메서드나 클래스의 프로그램 코드를 틀에서
 *    찍어내는 듯이 생산하는 기법임.
 *    예를 들어 java.util 패키지에 있는 Stack<E> 클래스는 제네릭
 *    타입 <E>를 가진 제네릭 클래스임.
 *    Stack<E>에서 E에 구체적인 타입을 지정하면, 지정된 타입만 다룰 수
 *    있는 구체화(specilized)된 stack이 됨. 
 *    예를 든다면 Stack<Integer>는 Integer만 다룰 수 있는 
 *    stack이 되고, Stack<Point>는 Point 타입의 객체만 사용할 
 *    수 있는 stack이 되는 것임.
 *  - 다양한 타입의 객체들을 다루는 메서드나 다음에 학습할 컬렉션에서
 *    컴파일 할 때 타입을 확인해 주는 기능.
 *    ==> 즉, 다루어질 객체의 타입을 미리 명시해 줌으로써 번거로운
 *        형변환 작업을 줄여준다는 장점이 있음. 또한 객체의 타입을
 *        컴파일 시에 체크하여 주기 때문에 객체의 타입 안정성을 
 *        높여 준다는 장점도 있음.
 *  - jdk 1.5 버전부터 추가된 기능.
 *  - 데이터의 명확성과 안정성을 보장해 줌.
 *    ==> 다른 데이터 타입의 데이터가 들어올 경우, 컴파일 시점에서
 *        error 발생.
 *        
 *  ※ <E> : Element 를 의미하며 컬렉션에서 요소임을 나타냄.
 *    <T> : Type을 의미함.
 *    <K> : Key를 의미함.
 *    <V> : Value를 의미함.  
 */

public class Good<T> {

	T t;

	public T getT() {
		return t;
	}

	public void setT(T t) {
		this.t = t;
	}
	
	
}

 

package generic;

public class Goods_03 {

	public static void main(String[] args) {
		
		Good<Apple> good1 = new Good<Apple>();
		
		//good1.setT(new Pencil());		오류. 타입을 Apple 로 지정했기 때문.
		good1.setT(new Apple());
		
		Apple apple =  good1.getT();
		
		apple.output();
		System.out.println();
		
		
		Good<Pencil> good2 = new Good<Pencil>();
		
		good2.setT(new Pencil());
		
		Pencil pencil = good2.getT();
		
		pencil.output();
	}
}

'Java > 기초 내용 정리' 카테고리의 다른 글

Java(Generic)_05  (0) 2024.11.07
Java(Generic)_04  (0) 2024.11.07
Java(Generic)_02  (0) 2024.11.07
Java(Generic)_01  (0) 2024.11.07
Java(GUI)_Layout_28  (0) 2024.11.06
'Java/기초 내용 정리' 카테고리의 다른 글
  • Java(Generic)_05
  • Java(Generic)_04
  • Java(Generic)_02
  • Java(Generic)_01
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)_03
상단으로

티스토리툴바