Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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
Tags
more
Archives
Today
Total
관리 메뉴

붓, 그리다

제너릭의 종류 2.2) 와일드 카드 <? extends T> 본문

JAVA/Basic

제너릭의 종류 2.2) 와일드 카드 <? extends T>

붓그린 2017. 6. 20. 14:48
<? 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);
        }
    
 
}
 


Comments