붓, 그리다
제너릭의 종류 2.3) 와일드 카드 <? super T> 본문
<? super 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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | package j0620.super2; // <? super T> : 상속관계에 존재하는 클래스만 자료형으로 받고 싶은 경우 // T : 자식클래스로 고정으로 지정해주고 자식클래스와 연관이 있는 부모클래스는 전부 적용이 된다(매개변수로 허용) import java.util.*; class Person{ String name; // 부모 클래스에 소스코드를 추가(생성자 오버로딩) Person(){}; Person(String name){ this.name=name; } public String toString() { return name; } } // Man class Man extends Person{ // T(Man) 자식클래스 // 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{ // T(Woman) 자식클래스 // String name; Woman(String name){ this.name=name; } @Override public String toString() { // TODO Auto-generated method stub return name; } } public class WildSuper { 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("사장님")); 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); // 허용되는 자료형이 아님 } // <? super T> 메소드 public static void printData(List <? super Woman> list) { // Woman과 부모인 Person의 데이터만 허용 for(Object obj:list) // 어떤 자료형이든 받아야하기에 Object형 System.out.println(obj); } } | cs |
'JAVA > Basic' 카테고리의 다른 글
JDBC) 테이블에 DB연동하기 1) 오라클에서 테이블 생성 (0) | 2017.06.23 |
---|---|
JDBC) 이클립스에서 DB 연동하기 (0) | 2017.06.23 |
제너릭의 종류 2.2) 와일드 카드 <? extends T> (1) | 2017.06.20 |
제너릭의 종류 2.1) 와일드 카드 <?> (0) | 2017.06.20 |
제너릭의 종류 1) Class 클래스명<T>{} (0) | 2017.06.20 |
Comments