drexqq

[Java, 자바]Generic(제네릭) 본문

Back-End/Java

[Java, 자바]Generic(제네릭)

drexqq 2020. 6. 8. 12:59
728x90
반응형

Java의 Generic(제네릭)에 대해서 알아보자.

 

Generic == template 자료형의 변수라고 생각할 수 있다.

 

Generic은 간단하게 '같은 클래스'에서 '여러 가지 자료형'을 사용할 경우에 사용된다

 

package main;

public class mainClass {

	public static void main(String[] args) {
		Box<Integer> box = new Box<Integer>(123);
		System.out.println(box.getTemp()+1);
		
		Box<String> sBox = new Box<String>("my world");
		System.out.println(sBox.getTemp());
		
		BoxMap<Integer, String> bMap = new BoxMap<Integer, String>(1001, "hello");
		System.out.println(bMap.getKey()+", "+bMap.getValue());

	}
}

class Box<T> {	// <사용자 임의지정> = Generic, 
	T temp;
	
	public Box(T temp) {
		this.temp = temp;
	}
	
	public T getTemp() {
		return temp;
	}
	public void setTemp(T temp) {
		this.temp = temp;
	}
}

class BoxMap<Key, Value>{
	Key key;
	Value value;
	public BoxMap(Key key, Value value) {
		super();
		this.key = key;
		this.value = value;
	}
	public Key getKey() {
		return key;
	}
	public void setKey(Key key) {
		this.key = key;
	}
	public Value getValue() {
		return value;
	}
	public void setValue(Value value) {
		this.value = value;
	}
}

 

위 예제를 보면 알 수 있듯이 클래스명 뒤에 <> 안에 있는 값들을 파라미터로 사용할 수 있다.

 

들어가는 값은 자료형과 오브젝트를 많이 사용한다.

 

또한 파라미터로 받을 수 있는 값은 하나만 받을 수 있는 게 아니라 다수의 값을 한 번에 받을 수 있다.

 

아래는 파라미터명으로 자주 쓰이는 이름이다.

E - Element
K - Key
N - Number
T - Type
V - Value

 

 

728x90
반응형

'Back-End > Java' 카테고리의 다른 글

[Java, 자바] Abstract  (0) 2020.06.09
[Java, 자바] ArrayList  (0) 2020.06.08
[Java, 자바] static  (0) 2020.06.03
[Java, 자바] final  (0) 2020.06.03
[Java, 자바] Overriding(오버라이딩)  (0) 2020.06.03
Comments