본문 바로가기
개발/Java

제네릭 타입. 꺾쇠 괄호 < > 왜 사용하는가?

by rudnine 2021. 4. 3.
반응형

JAVA에서는 꺾쇠 괄호 <> 를 사용하는 문법을 자주 볼 수 있는데요.
이게 뭘까요? 왜 사용하는 걸까요?
이것을 자바에서는 제네릭 타입이라고 부른다고 하네요.

 


ㅁ 왜 사용하는가?

'이것이 자바다' 책을 기본서적으로 보고 있습니다.
설명에 따르면, 메소드에 사용될 반환타입을 명시적으로 정해서, 오류를 사전에 차단하고, 성능을 높이고자 함이라고 합니다.

이게 무슨 말인지 좀 더 풀어서 설명하면,
꺾쇠 괄호 <> 안에 데이터 타입을 정의 하면 두가지 면에서 좋습니다.

1) 실행단계에서 오류가 나기 전, 컴파일 단계에서 미리 체크가 가능하다.
Box<String> 으로 정해 놓으면, String 만 들어 올 수 있는 것이죠.
Object로 설정하면 Integer도 들어올 수 있는데, 이런 경우 (String) str.get(); 해서 데이터를 뽑을 때 강제형변환을 해주지 않으면 오류가 발생할 겁니다. 
이를 사전에 차단 할 수 있습니다.

2) 위와 이어지는 내용인데요. 입력 단계에서 String으로 데이터 타입을 제한했기 때문에, 출력시 str.get(); 해서 뽑을 때, 강제형변환을 해줄 필요가 없어집니다. 


ㅁ 어떻게 사용하는가?

샘플예제를 실어봅니다.

public class Box<T> {
	private T t;
	public T get() {
		return t;
	}
	public void set(T t) {
		this.t = t;
	}
}

위처럼 T라는 변수로 Box class를 정의 합니다.
이후, 불러다 쓸 때, 지정하는 데이터 타입에 따라 자동으로 set, get이 맞춰진다고 합니다.

public class BoxExample {
	public static void main(String[]  args) {
		Box<String> box1 = new Box<String>();
		box1.set("heloo");
		String str = box1.get();
		
		System.out.println(str);
		
		Box<Integer> box2 = new Box<Integer>();
		box2.set(777);
		int val = box2.get();
		
		System.out.println(val);
	}
}

위의 결과는 heloo 가 나오고, 
아래의 결과는 777 이 나오게 됩니다.

 

반응형

댓글