본문 바로가기

IT일반과목/java

자바 제너릭 다형성


AnimalMgr<Tiger> m3 = new AnimalMgr<Tiger>(new Tiger(100));

AnimalMgr<Bear> m4 = new AnimalMgr<Bear>(new Bear(200));

System.out.println(m3.data.hp);

-------------------------------------------------------

class AnimalMgr<T>{

public T data;

public AnimalMgr(T data) {

this.data=data;

}

}

제너릭을 쓸경우 다형성을 안썼기때문에 다 불러올수가 있다.

---------------------------------------------------------------

- 제네릭의 제한

 -> 해당클래스를 쓸때 클래스를 통해 객체를 만들때 데이터타입을 정하는것이 제네릭이다.

3가지

1. <?> : 제한없음, 모드타입이 가능(T,E)

2. <? extends T> : 상한제한, T와 그 자손들만 가능

3. <? super T> : 하한제한, T와 그 조상들만 가능


-------------------------------

우린 extends까지만 한다.


--------------------------------------------------------------


package kh.java.run;


import kh.java.test.Generic;


public class Run3 {

public static void main(String[] args) {

Test t1=new Test(new Animal());

Test t2 =new Test(new Tiger());

Test t3=new Test(new Bear());

//Tiger은 상속을 받았기 때문에 별문제없이 가능하다.

//Animal은 자기자신 포함이다.

//Animal까진 호환이 된다.

}

}


class Animal{



}


class Tiger extends Animal{


}

class Bear {


}

class Test<T super Animal>{

public T data;

public Test(T data) {

this.data=data;

}

}

//이자리에 올수 있는건 Animal클래스와 이걸 상속한 녀석만 올수있어.

'IT일반과목 > java' 카테고리의 다른 글

쓰레드-2  (0) 2018.08.05
쓰레드-1  (0) 2018.08.05
자바 제너릭(Generic)2  (0) 2018.08.03
자바 제너릭(Generic)  (0) 2018.08.03
MVC패턴으로 소스 짜보기2  (0) 2018.08.02