[ 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 = {20, 30, 10, 90, 80};
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 = {10, 30, 50, 20};
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]);
}
'Java' 카테고리의 다른 글
[Java] Exception ( Error, Exception, 예외 처리, 예외 전가) (0) | 2023.03.27 |
---|---|
[Java] JFrame - Swing (이미지 아이콘, 메모장, 채팅) (0) | 2023.03.24 |
[Java] 로또 번호 생성기 (Lotto) (0) | 2023.03.24 |
[Java] Wrapper Class / String 클래스 전용 <String> (0) | 2023.03.23 |
Java Collection Framework (JCF) / Collection (List - ArrayList, Vector, Stack / Set / Map) (0) | 2023.03.23 |