데이터 타입을 유연하게 지정하여 코드의 재사용성과 안정성을 높이는 기능
항목 | 설명 | 예시 |
정의 | 클래스나 메서드에서 사용할 데이터 타입을 외부에서 지정 | class Box<T> { T value; } |
장점 | 타입 안정성 보장, 코드 재사용성 증가 | List<String> list = new ArrayList(); |
타입 파라미터 | 클래스/메서드에서 사용하는 데이터 타입을 가리키는 변수 | <T>, <E>, <K,V> |
제네릭 클래스 | 특정 데이터 타입에 의존하지 않고, 다양한 타입으로 객체 생성 |
class Box { T value; } |
제네릭 메서드 | 메서드 내부에서 사용할 데이터 타입을 유연하게 지정 | public <T> void print(T t) { } |
제네릭 인터페이스 | 특정 데이터 타입에 의존하지 않고, 다양한 타입으로 구현 | interface Comparable<T> |
제한된 제네릭 | 특정 타입이나 그 하위 타입으로 제한된 제네릭 | class Box<T extends Number> |
와일드카드 | 제네릭 타입을 모호하게 지정할 때 | List<?> list = new ArrayList(); |
[예시 코드]
public class ListTest {
//제네릭을 사용할 경우 컴파일 시 타입을 체크해줌
//arraylist를 생성할 때 다양한 종류의 객체를 담을 수 있지만, 한 종류의 타입만을 지정해주면
//타입 안정성이 올라갈 수 있음 (지정된 객체만 담을 수 있음)
public static void main(String[] args) {
//이전 예시
ArrayList ar = new ArrayList();
ar.add("first");
ar.add(2);
ar.add('c');
ar.add(true); //여러 타입이 들어갈 수 있음
for(int i=0; i < ar.size();i++) {
System.out.println(ar.get(i));;
}
String firsts = (String) ar.get(0);
//E는 변수를 의미
ArrayList<String> ars = new ArrayList<String>();
ars.add("hello");
//ars.add(2); //컴파일 에러가 뜸
//ars.add(false);
}
}
728x90
'용어 > java' 카테고리의 다른 글
[JAVA] 상속, 다형성 오버라이딩 된 메서드의 우선권 (0) | 2024.07.01 |
---|---|
[국비][JAVA] list 이해하기 (2) | 2024.06.08 |
[국비][JAVA] 컬렉션 프레임웍의 큰 틀 이해하기 (2) | 2024.06.08 |
[국비][JAVA] Split과 StringTokenizer 비교 (0) | 2024.06.08 |
[국비][JAVA] 오토박싱과 언박싱 (0) | 2024.06.04 |