제네릭 Generic
기존 배열 예시
public static void main(String[] args) {
int[] scoreArray = new int[1];
scoreArray[0] = 100;
}
// 만약, 값을 하나 더 추가하려면 아래와 같은 코드가 필요하다.
int[] scoreArray2 = new int[scoreArray.length + 1];
// 배열 복사
System.arraycopy(scoreArray, 0, scoreArray2, 0, scoreArray.length);
scoreArray2[1] = 95;
for(int n: scoreArray) {
System.out.println("scoreArray: " + n);
}
for(int n: scoreArray2) {
System.out.println("scoreArray2: " + n);
}
}
이런 방식 말고 사용할 타입을 나중에 정하도록 하는 제네릭을 사용하면 훨씬 더 편리해진다.
제네릭은 클래스명 옆에 부등호( < > )를 이용해 정의
// 제네릭을 적용한 ScoreList
public class ScoreList<T> {
private Object[] scoreArray;
private int size;
public ScoreList() {
scoreArray = new Object[2];
}
/**
* scoreArray 배열에 값을 추가
* @param score
*/
public void add(T score) {
if ( size >= scoreArray.length ) {
Object[] tempScoreArray = new Object[scoreArray.length + 2];
… 생략 …
}
… 생략 …
}
/**
* scoreArray 배열에서 index의 값을 반환
* @param index
* @return
*/
public T get(int index) {
if (index >= size) {
throw new IndexOutOfBoundsException(index);
}
return (T) scoreArray[index];
}
… 생략 …}
<T>
: 제네릭은 보통 한 글자 단위로 작성한다.public class ScoreList<T>