붓, 그리다
제너릭의 종류 2.2) 와일드 카드 <? extends T> 본문
<? extends T>
- 상속관계로 이루어진 클래스만 자료형을 받는다
- ?(자식 클래스), T(부모클래스)로 부모클래스와 자식 클래스의 임의의 자료형만 받는다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | package j0620.extend; // <? extends T> : 상속관계로 이루어진 클래스만 자료형을 받는다 // ? : 자식클래스, T : 부모클래스 => 부모클래스와 자식 클래스의 임의의 자료형을 입력 받는다 import java.util.*; class Person{ String name;} // 부모 클래스(T) // Man class Man extends Person{ // String name; Man(String name){ this.name=name; // m.name="임시" } @Override // 객체의 주소값을 출력시키는 메소드(Object) public String toString() { // TODO Auto-generated method stub return name; } } // Woman class Woman extends Person{ // String name; Woman(String name){ this.name=name; } @Override public String toString() { // TODO Auto-generated method stub return name; } } public class WildExtend { public static void main(String[] args) { // TODO Auto-generated method stub // Man List<Man> list=new ArrayList(); // Man m=new Man("임시"); list.add(new Man("임시")); //축약형 list.add(new Man("테스트")); printData(list); // Woman List<Woman> list2=new ArrayList(); list2.add(new Woman("임시2")); list2.add(new Woman("테스트2")); printData(list2); // Person List<Person> list3=new ArrayList(); list3.add(new Person()); // 값을 집어넣을 수 없음(설계를 하지 않음, 즉 기본생성자) printData(list3); // Double List<Double> list4=new ArrayList(); list4.add(12.5); list4.add(22.5); list4.add(14.3); printData(list4); // 허용되는 자료형이 아님 } // <? extends T> 메소드 public static void printData(List <? extends Person> list) { for(Object obj:list) // 어떤 자료형이든 받아야하기에 Object형 System.out.println(obj); } } |
'JAVA > Basic' 카테고리의 다른 글
JDBC) 이클립스에서 DB 연동하기 (0) | 2017.06.23 |
---|---|
제너릭의 종류 2.3) 와일드 카드 <? super T> (1) | 2017.06.20 |
제너릭의 종류 2.1) 와일드 카드 <?> (0) | 2017.06.20 |
제너릭의 종류 1) Class 클래스명<T>{} (0) | 2017.06.20 |
제너릭 Genrics 개요 (0) | 2017.06.20 |
Comments