728x90
제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다.
package org.opentutorials.javatutorials.generic;
class Person<T>{
public T info;
}
public class GenericDemo {
public static void main(String[] args) {
Person<String> p1 = new Person<String>();
Person<StringBuilder> p2 = new Person<StringBuilder>();
}
}
p1.info와 p2.info의 데이터 타입은 결과적으로 아래와 같다.
p1.info : String
p2.info : StringBuilder
그것은 각각의 인스턴스를 생성할 때 사용한 <> 사이에 어떤 데이터 타입을 사용했느냐에 달려있다.
클래스 선언부를 보자.
public T info;
클래스 Person의 필드 info의 데이터 타입은 T로 되어 있다. 그런데 T라는 데이터 타입은 존재하지 않는다. 이 값은 아래 코드의 T에서 정해진다.
class Person<T>{
위 코드의 T는 아래 코드의 <> 안에 지정된 데이터 타입에 의해서 결정된다.
Person<String> p1 = new Person<String>();
위의 코드를 나눠보자. 아래 코드는 변수 p1의 데이터 타입을 정의하고 있다.
Person<String> p1
아래 코드는 인스턴스를 생성하고 있다.
new Person<String>();
즉 클래스를 정의 할 때는 info의 데이터 타입을 확정하지 않고 인스턴스를 생성할 때 데이터 타입을 지정하는 기능이 제네릭이다.
프로그래밍의 Generic은
- 일반적인 코드를 작성하고, 이코드를 다양한 타입의 객체에 대하여 재사용하는 프로그래밍 기법
- 클래스에서 사용할 타입을 클래스 외부에서 설정하는 타입
- Java 1.5부터 추가되었으며 주로 java Collection에서 많이 사용된다.
728x90
'JAVA' 카테고리의 다른 글
16일차//[java] 컬렉션 프레임워크 // ArrayList (1) (0) | 2021.02.02 |
---|---|
16일차//[java] 컬렉션 프레임워크 (0) | 2021.02.01 |
16일차// BaseBall 팀 DAO, DTO 개념을 이용해 파일 입출력 (0) | 2021.02.01 |
16일차// [java] File 객체 (0) | 2021.02.01 |
오류와 예외 (0) | 2021.02.01 |