Java

[Java] Generic (미지수 T) + settergetter 설정, 향상된 for문

소댓 2023. 3. 24. 17:45

[ Generic ]

 

* Generic

: 데이터 형식에 의존하지 않고 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에
  중점을 두어 재상용을 높일 수 있는 프로그래밍 방식

> 아직 자료형을 결정하지 않고 미완성 자료형으로 선언 => 모든 자료형에 대해서 처리

 

 

* GenEx<T>

- <T> : element를 포함하는 컴포넌트, 미지수

 

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
package day17;
 
// 모든 자료형에 대해서 처리
// 아직 자료형을 결정하지 않고 미완성 자료형으로 선언
 
// Generic : 데이터 형식에 의존하지 않고 하나의 값이 
// 여러 다른 데이터 타입들을 가질 수 있는 기술에
// 중점을 두어 재사용을 높일 수 있는 프로그래밍 방식
 
public class GenEx<T> {
 
    // T : 미지수
    // 마치, 파라미터 변수처럼 쓰임
    
    T[] array;
 
    public T[] getArray() {
        return array;
    }
 
    public void setArray(T[] array) {
        this.array = array;
    }
    
    public void print() { 
        for(T x : array) {
            System.out.println(x);
        }
    }
    
}
 
cs

 

 

-  Generic 테스트

 

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
package day17;
 
public class TestMain2 {
    public static void main(String[] args) {
        
        Integer[] arr1 = {2030109080};
        
        GenEx<Integer> ge1 = new GenEx<Integer>();
        
        ge1.setArray(arr1);
        
        ge1.print();
        
        System.out.println("-----------------------");
        
        String[] str = {"오늘은""즐거운""금요일"};
        
        GenEx<String> ge2 = new GenEx<String>();
        
        ge2.setArray(str);
        
        ge2.print();
        
    }
}
 
cs

 

 

+) ArrayList, Hashset, Hashmap도 사실 <String>처럼 자료형을 적어주는 게 더 안전함

 

 

더보기

- Generic을 사용하지 않는다면?

 

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 day17;
 
public class GenEx1 {
 
    int[] array;
    
    // setter, getter
    
    public int[] getArray() {
        return array;
    }
    
    public void setArray(int[] array) {
        this.array = array;
    }
    
    public void print() {
//        for(int i=0; i<array.length; i++) {
//            System.out.println(array[i]);
//        }
        // 출력은 위와 같이 해도 되지만, 아래처럼 해도 됨
        // 향상된 for문, 개선된 for문
        for(int x : array) {
            System.out.println(x);
        }
    
    }
}
 
--------------------------------------------------------------
 
package day17;
 
public class GenEx2 {
    String[] array;
 
    public String[] getArray() {
        return array;
    }
 
    public void setArray(String[] array) {
        this.array = array;
    }
    
    public void print() {
        for(String x : array) {
            System.out.println(x);
        }
    }
}
 
--------------------------------------------------------------
 
package day17;
 
public class GenEx3 {
 
    float[] array;
 
    public float[] getArray() {
        return array;
    }
 
    public void setArray(float[] array) {
        this.array = array;
    }
    
    public void print() {
        for(float x : array) {
            System.out.println(x);
        }
    }
    
}
 
 
 
cs

 

- Test

 

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
package day17;
 
public class TestMain {
    public static void main(String[] args) {
        
        GenEx1 ge1 = new GenEx1();
        
        int[] m = {10305020};
        
        ge1.setArray(m);
        
        ge1.print();
        
        
        
        GenEx2 ge2 = new GenEx2();
        
        String[] str = {"오늘은""즐거운""금요일"};
        
        ge2.setArray(str);
        
        ge2.print();
        
        
        System.out.println("-----------------");
        
        // 플롯 타입
        GenEx3 ge3 = new GenEx3();
        
        float[] n = {100.0f, 200.0f, 300.9f};
        
        ge3.setArray(n);
        
        ge3.print();
        
        
        
    }
}
 
cs

 

 

 

* setter getter 설정

> Source - Generate Setter Getter - 선택

 

 

* 향상된 for문, 개선된 for문
for(int x : array) {
System.out.println(x);
}

 

> 아래의 for문 코드와 같음

public void print() {
for(int i=0; i<array.length; i++) {
System.out.println(array[i]);
}