0709 Generics

onnbi·2022년 7월 26일
0

java-tutorial

목록 보기
9/13
post-thumbnail

Generics

다형성에서 부모타입의 변수로 자식객체 고유의 메서드를 사용할 수 없다
사용하기 위해서는 다운캐스팅 해야 하는데, 이를 극복하기 위해 자바에서 제네릭을 제공한다

((Dog)a1).dogFunction();
((Cat)a2).catFunction();
// 제네릭 안하면 다운캐스팅 해야 함

AnimalMgr2<Dog> am3 = new AnimalMgr2<Dog>(d1);
AnimalMgr2<Cat> am4 = new AnimalMgr2<Cat>(c1);

Dog a1 = am3.getData();
Cat a2 = am4.getData();
	
a1.dogFunction(); // 강아지 고유기능
a2.catFunction(); // 고양이 고유기능
  • 객체 생성
    클래스명<타입> 레퍼런스 = new 생성자<타입>();
  • '객체' 타입이 와야 하기 때문에 기본형은 올 수 없다
  • Wrapper 클래스로 boxing하여 참조형의 형태로 바꿔줘야 한다
  • <타입1, 타입2> 여러개의 데이터 타입도 지정할 수 있다
public class GenericEx1<T>{
	private T data;
  // 데이터 타입 자리을 사용자가 정할 수 있도록
  // T로 지정한다
	public GenericEx1(){}
	
  public GenericEx1(T data){
	this.data = data;
	}

  public T getData(){ return data; }

  public void setData(T data){ this.data = data; }

제네릭이 설정된 러퍼런스를 리턴하거나 매개변수를 넘겨주는 경우에도 <타입>을 적용해 주어야 한다

Generics Type 설정

  1. : 제한 없음
  2. <T extends A 클래스> : A클래스와 그 자손클래스만 가능
  3. <T super A 클래스> : A클래스와 그 조상들만 가능
profile
aelatte coding journal

0개의 댓글