서로 관련있는 클래스나 인터페이스의 컴파일된 클래스(.class)파일들을 한 곳에 묶어 놓은 것
package 패키지명;
로 선언한다하여 , '패키지명' 패키지에 저장할 것을 지시한다.
배열이 가진 고정크기의 단점을 극복하기 위해
객체들을 쉽게 삽입, 삭제, 검색할 수 있는 가변크기 컨테이너이다.
Vector<E>
에서 E
대신 Integer와 같이 구체적 타입 지정 가능E
를 일반화시킨 타입 혹은 generic type이라고 부른다.모든 종류의 타입을 다룰 수 있도록, 클래스나 메소드를 generic type을 이용하여 선언하는 기법
예시)
// 제네릭 스택 클래스
class Stack<E>{
...
void push(E element){...}
E pop() {...}
...
}
// 정수로 활용!
Vector<Integer> v = new Vector<Integer>();
void push(Integer element) {...}
Integer pop() {...}
// 문자열로 활용!
Vector<String> v = new Vector<String>();
void push(String element) {...}
String pop() {...}
public class MyClass<T> {
T val; // 변수 val의 타입은 T
void set(T a) {
val = a;
}
T get () {
return val;
}
}
MyClass<String> s = new MyClass<String>(); // <T>를 String으로 구체화
List<Integer> li=new List<Integer>(); // <E>를 Integer로 구체화
기본타입이 아닌, wrapper 타입만 가능함을 기억하자!!
public class MyVector<E>{
E create() {
E a = new E(); // 컴파일 오류. 제너릭타입의 객체 생성 불가능
return a;
}
}