본문 바로가기

프로그래밍/Java

[Java]제네릭

제네릭이란

 클래스 또는 메소드에서 사용할 타입을 클래스 내부가 아닌 외부에서 선언하는 것.

즉, 클래스를 정의할 때 매개변수의 타입을 확정 짓지않고 해당 클래스의 객체를 생성할 때 매개변수의 데이터 타입을 지정해주게 된다.

 

제네릭 사용 이유

 1. 객체를 생성할 때 데이터 타입을 정함으로서 클래스의 재사용성이 높아진다.

 2. 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있다.

 

제네릭 사용 방법

 <> 기호를 사용하여 제네릭을 설정해 줄 수 있다.

public class 클래스명<T> {...}
public interface 인터페이스명<T> {...}

 

예시)

* 제네릭을 사용하지 않은 클래스 및 객체

// Test 클래스 정의
public class Test {

	private String name; // 클래스 정의 단계부터 String이라는 데이터 타입을 지정해준다.

	public void setName(String name) {
    	this.name = name;
    }
    
    public String getName() {
    	return name;
    }
}

// Test 객체 생성
pubilc static void main(String args[]){

	Test test = new Test();
    
    String tempString = "김철수" // 클래스에서 정의된 데이터 타입에 맞춰 변수 값을 지정해준다.
    Test.setName(tempString);
}

 

* 제네릭을 사용한 클래스 및 객체

// 클래스 정의
// 일반적으로 <T>를 사용하지만 T 대신 다른 파라미터를 사용해 줄 수 있다.
public class GenericTest <T> {

	private T name;
    
    public void setName(T name) {
    	this.name = name;
    }
    
    pubilc T getName() {
    	return name;
    }

}

// 객체 생성
public static void main(String arg[]){

	// 객체를 생성할 때 <String>을 통해 String타입을 사용하겠다고 명시.
	GenericTest<String> genericTest = new GenericTest<String>();
    
    String tempString = "홍길동";
    genericTest.setName(tempString);
}

 

자주 사용하는 타입인자

<T> : Type

<E> : Element

<K> : Key

<N> : Number

<V> : Value

<R> : Result

'프로그래밍 > Java' 카테고리의 다른 글

[Java] 문자열 배열에 저장하기  (1) 2021.11.28
[Java] replace()와 replaceAll()  (0) 2021.11.25
[Java]Collection  (0) 2021.04.28
[Java] 업캐스팅, 다운캐스팅  (0) 2021.04.09
[Java]접근 지정자  (0) 2021.04.06