제네릭(Generics)
: 다양한 타입의 객체를 다룰 때 코드의 재사용성과 안전성을 높여주는 기능이다
제네릭을 사용하면 여러가지 자료형에 대해 동일한 로직을 작성할 수 있다
타입 안전성을 보장하고, 잘못된 자료형을 사용하는 실수를 줄일 수 있고 코드의 재사용성을 높일 수 있다
package ch13;
public class Box {
public Object content;
} // Box에 넣을 내용물로 content 필드를 선언한다
// Object 타입은 모든 클래스의 최상위 부모클래스이다
// 따라서 모든 객체는 부모타입인 Object로 자동 타입 변환이 되므로
// content 필드에는 어떤 객체든 대입이 가능하다
Box box = new Box();
box.content = 모든 객체;
// Box안의 내용물을 얻을 때 대입된 내용물의 타입을 안다면 강제타입 변화을 거쳐 얻기가능하다
String content = (String) box.content;
//Box를 생성할 떄 저장할 내용의 타입을 미리 알려주면 Box는 content에 무엇이 대입되고
//읽을 때 어떤 타입으로 제공될지 알게된다 이것이 제네릭이다
제네릭(Generic) 이란 결정되지 않은 타입을 파라미터로 처리하고,
실제 사용 할 때 파라미터를 구체적인 타입으로 대체시키는 기능이다
// 제네릭 클래스를 정의합니다. T는 타입 매개변수입니다.
public class Box<T> {
private T item;
// 상자에 물건을 넣습니다.
public void set(T item) {
this.item = item;
}
// 상자에서 물건을 꺼냅니다.
public T get() {
return item;
}
}
//지피티가 알려주는 예시
<T>: 타입 매개변수를 나타내며, 임의의 타입을 의미합니다. 나중에 이 클래스를 사용할 때 타입을 지정하게 됩니다.
T item: 클래스 안에서 이 타입을 사용하여 변수를 선언합니다.
이렇게 제네릭 클래스를 만들면, 어떤 타입의 물건이든 넣을 수 있는 상자를 만들 수 있습니다.
◆ 제네릭 타입
: 제네릭 타입은 결정되지 않은 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다
제네릭 타입은 선언부에 <> 부호가 붙고 그 사이에 타입 파라미터들이 위치한다
타입 파라미터는 변수명과 동일한 규칙에 따라 작성할 수 있지만 일반적으로 대문자 알파벳 한 글자로 표현한다
외부에서 제네릭 타입을 사용하려면 타입 파라미터에 구체적인 타입을 지정해야 한다
만약 지정하지 않으면 암묵적으로 Object 타입이 사용된다
◆ 제네릭 메소드
: 제네릭 메소드는 타입 파라미터를 가지고 있는 메소드를 말한다
타입 파라미터가 메소드 선언부에서 정의된다는 점에서 제네릭 타입과 차이가 있다
제네릭 메소드는 리턴 타입 앞에 <>기호를 추가하고 타입 파라미터를 정의한 뒤 리턴 타입과 매개변수 타입에서 사용한다
하나의 메소드로 여러종류의 데이터를 다룰 수 있게 해주는 메소드
예를들어 숫자,문자열 같은 다양한 데이터 타입을 하나의 메소드로 처리할 수 있다는 뜻
◆ 제한된 타입 파라미터
: 제네릭 에서 타입 파라미터에 제한을 두어서 특정 타입 또는 그 하위 타입만사용할 수 있도록 설정하는 기능
◆ 와일드카드 타입 파라미터
: 제네릭 타입을 매가값이나 리턴 타입으로 사용할 때 타입 파라미터로 ?(와일드카드)사용할 수 있다
? 는 범위에 있는 모든 종류의 데이터를 받아들일 수 있다
> 어떤 종류의 데이터 타입이 들어오더라도 문제없이 처리할 수 있다
'Java' 카테고리의 다른 글
| Java_메인 스레드 (1) | 2024.10.17 |
|---|---|
| Java_멀티 스레드와 멀티 프로세스의 차이 (0) | 2024.10.17 |
| Java_어노테이션(Annotation) (0) | 2024.10.16 |
| Java_리플렉션 (0) | 2024.10.16 |
| Java_날짜와 시간 클래스 (0) | 2024.10.16 |