1. ์ ๋ค๋ฆญ์ค๋?
(1) ์ฌ์ ์ ์๋ฏธ
Generics - 1) ์ผ๋ฐ์ ์ธ, 2) ํฌ๊ด์ ์ธ 3) ์ด์นญ์ ์ธ
java์์์ ์๋ฏธ๋ 2,3๋ฒ ๋ป์ ๊ฐ๊น๋ค. Generics ํ์ ์ ์ฌ๋ฌ๊ฐ์ง ํ์ ์ ํฌ๊ดํ๋ค.
(2) Java์์์ Generics ์๋ฏธ
๋ค์ํ ํ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ๊ฐ์ฒด๋ก ์ด๋ฃจ์ด์ง ๋งค์๋๋ ํด๋์ค์ ํ์ ์ฒดํฌ๋ฅผ ์ปดํ์ผ ์์ ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋ปํ๋ค.
์ด๋ค ๋งค์๋์ ํ๋ผ๋ฏธํฐ ์๋ฃํ์ generics๋ก ๋ง๋ค๋ฉด, ํด๋น ํ๋ผ๋ฏธํฐ์ ์๋ฃํ์ ๋ค์ด์ค๋ ๊ฐ์ ์๋ฃํ์ ๋ฐ๋ผ ๋ฐ๋๋ค.
2. ์ ๋ค๋ฆญ์ค๋ก ์ด๋ฃจ์ด์ง ๋งค์๋์ ์ฌ์ฉ์ด ํ์ํ ์๊ฐ?
์ฐ๋ฆฌ๊ฐ ๋ชจ๋ ๋ค๋ฅธ ํ์ ์ ๋ฐฐ์ด๋ค์ ์ํ ํ๋ฉฐ ์์๊ฐ์ ์ ๋ถ ์ถ๋ ฅํด์ผ ํ๋ค๊ณ ๊ฐ์ ํ์.
๊ทธ๋ ๋ค๋ฉด, ํด๋น ๋ฐฐ์ด๋ค์ ์ํํ์ฌ ๊ฐ์ ์ถ๋ ฅํ๋ ๋งค์๋๋ฅผ ์ ๋ถ ๋ฐ๋ก ๋ง๋ค์ด์ผ ํ ๊ฒ์ด๋ค.
์๋ํ๋ฉด ์๋ฃํ์ด ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
public class Generic_Ex {
public static void main(String[] args) {
int[] iArray = {1,2,3,4,5};
double[] dArray = {1.0,2.0,3.0,4.0,5.0};
String[] sArray = {"A", "B", "C", "D","E"};
//ํ๋ ์ผ์ ๊ฐ์ง๋ง, ์๋ก ๋ค๋ฅธ ์๋ฃํ์ด๋ฏ๋ก ๋งค์๋๋ฅผ ๋ค ๋ฐ๋ก ๋ง๋ค์ด์ค์ผํจ.
printIntArray(iArray);
printDoubleArray(dArray);
printStringArray(sArray);
}
// ๋ค ๋ฐ๋ก ๊ตฌํ
private static void printIntArray(int[] array){
for(int i : array){
System.out.print(i + " ");
}
System.out,println();
}
private static void printDoubleArray(double[] array){
for(double d : array){
System.out.print(d + " ");
}
System.out,println();
}
private static void printStringArray(String[] array){
for(String s : array){
System.out.print(s + " ");
}
System.out,println();
}
}
ํ์ง๋ง ์ ๋ค๋ฆญ์ค๋ฅผ ์ฌ์ฉํ๋ฉด, ๋งค์๋ ํ๋๋ก ๊ฐ์ ๋ค๋ฅธ ํ์ ์ ์ผ์ ์ฒ๋ฆฌํ ์ ์๋ค.
์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
static๊ณผ ๋ฐํ ์๋ฃํ ์ฌ์ด์ <T>๋ฅผ ๋ฃ๊ณ ์ธ์์ ์๋ฃํ์ T๋ก ๋ฐ๊พผ๋ค.
private static <T> void printAnyArray(T[] array) {
for (T t: array) {
System.out.print(t + " ");
}
System.out.println();
}
T๋ ์๋ฌด๋ฐ ๋จ์ด๋ก๋ ๋ฐ๊ฟ ์ ์๋ค. <Teacher>... Teacher๋ ๊ฐ๋ฅํ๋ค.
์ ์ผ ๋ง์ด ์ฐ์ด๋ ๋จ์ด๋ Type์ T, Key์ K, Value์ V, Element์ E์ด๋ค.
*์ฃผ์์
์ด์ ์์ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋๋ฅผ ์์ ํ๋์ ๋งค์๋๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค!
// printIntArray(iArray);
// printDoubleArray(dArray);
printStringArray(sArray);
์๋ฟ์ธ! ๊ทผ๋ฐ int์ double array๋ ํด๋น ๋งค์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค๊ณ ๋ฌ๋ค!
์ ๊ทธ๋ด๊น?
์ด์ ๋ Generics๊ฐ ๊ฐ์ฒด์ ๊ดํด์๋ง ์ง์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ ์๋ฃํ์ ์ ๋ค๋ฆญ์ค์ ํํ์ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ๊ธฐ๋ณธ ์๋ฃํ์ Wrapper ํด๋์ค๋ก ๋ฐ๊ฟ ์ค์ผ ํ๋ค.
int[] > Integer[]
double[] > Double[]
float[] > Float[]
์ด๋ค.
Integer[] iArray = {1,2,3,4,5};
Double[] dArray = {1.0,2.0,3.0,4.0,5.0};
์ด๋ ๊ฒ ๋ฐ๊พธ๋ฉด printAnyArray() ๋งค์๋๋ฅผ ์ด์ฉํ ์ ์๋ค.
*์ ๊ฒ
(1) ์ ๋ค๋ฆญ์ค์ ๋ป์?
(2) ์ ๋ค๋ฆญ์ค ์๋ฃํ์ ์ด์ฉํ ๋งค์๋๊ฐ ํ์ํ ์๊ฐ์?
(3) ์ ๋ค๋ฆญ์ค ์๋ฃํ ๋งค์๋ ์ด์ฉ ๋ชปํ๋ ๊ฒฝ์ฐ๋? ํด๊ฒฐ ๋ฐฉ๋ฒ์?