foxpacking

Programming Lessons

Java 언어 Korean

Java 총 정리[79. 제네릭]

제네릭

이전 걸음까지 추상화와 상속에 대한 이야기를 마무리 했습니다. 이제부터는 이전 내용보다 중요함이 조금 낮을 수 있습니다. 하지만 다다익선이기 때문에 더 많이 알 수록 분명 더 좋은 프로그램을 개발을 할 수 있다고 생각을 합니다.

제네릭에 대해서 이번 걸음에서 같이 공부를 하도록 하겠습니다. 제네릭이 무엇인지 그리고 제네릭을 사용하는 방법을 이번 걸음에서 같이 보도록 하겠습니다.

이번 걸음에서는 제네릭 이란?, 제네릭을 사용하면 좋은 점, 제네릭의 예제 소스를 통한 활용 이렇게 3가지를 이번 걸음에서 같이 공부를 하도록 하겠습니다. 이번 걸음에서 제네릭에 대한 이해가 한층 발전 될 수 있습니다.

제네릭 이란?

제네릭메인사진

제네릭이란 타입의 일반화 입니다. 자료형을 미리 정하는 것이 아니라 외부에서 선언시에 내부 자료형이 결정이 됩니다. 컴파일시 자료형을 결정해서 문제가 있는 것을 컴파일 때 알 수 있습니다. 여기서 중요한 것은 제네릭을 사용하기 위해서는 기본 자료형을 사용을 하면 안됩니다. 꼭! 참조 자료형만을 사용을 해야 합니다. 기본 자료형을 사용을 할 수 없기 때문에 기본 자료형에 대한 참조 자료형을 제공을 해줍니다.

int -> Integer

double ->Double

위와 같이 참조 자료형이 제공되기 때문에 꼭 참조 자료형을 제네릭으로 사용을 하세요.

제네릭 좋은점

  1. 재사용성이 좋습니다. 참조 자료형을 받아서 사용을 한다는 것은 어떤 참조 자료형도 받을 수 있기 때문에 굳이 정해진 것을 만들지 않아도 되기 때문입니다.
  2. 컴파일을 할 때 에러를 발견을 할 수 있습니다.
  3. 형 변환이 필요가 없습니다. 어떤 참조 자료형을 받기 때문에 형 변환이 굳이 필요가 없습니다.
  4. 위에 좋은 점 때문에 개발의 생산이 좋아집니다.

제네릭 예제


    class Box{
	T vol;
	
	void setVolume(T v) {
		vol = v;
	}
	T getVolume() {
		return vol;
	}
}
public class GenericTest {
	public static void main(String[] args) {
		Box ibox = new Box();
		ibox.setVolume(200);
		//ibox.setVolume(32.3); 에러
		System.out.println("박스의 부피는 : "+ibox.getVolume());
		Box dbox = new Box();
		dbox.setVolume(123.456);
		//dbox.setVolume(300); 에러
		System.out.println("박스의 부피는 : "+dbox.getVolume());
	}
}

위 소스와 같이 제네릭을 정하게 되면 그 변수는 제네릭에 선언한 자료형을 사용해서 소스 코드를 구현을 해야 합니다.

함께 보면 좋은 글

§ Java 마흔 세걸음 class(클래스)란?
§ Java 마흔 네걸음 class(클래스) 예제
§ Java 마흔 다섯걸음 class(클래스) 문제 1
§ Java 마흔 여섯걸음 class 내부 용어 정리
§ Java 마흔 일곱걸음 null
§ Java 마흔 여덟걸음 생성자란?
§ Java 마흔 아홉걸음 has 란?
§ Java 오십 걸음 has 문제
§ Java 오십 한걸음 객체 심화
§ Java 오십 두걸음 class 배열
§ Java 오십 세걸음 class 배열 심화
§ Java 오십 네걸음 class 배열 문제
§ Java 오십 다섯걸음 오버로딩 기초
§ Java 오십 여섯걸음 Method 오버로딩
§ Java 오십 일곱걸음 생성자 오버로딩
§ Java 오십 여덟걸음 오버로딩 문제
§ Java 오십 아홉걸음 접근 제한자
§ Java 육십 걸음 접근 제한자 사용
§ Java 육십 한걸음 상속 기초
§ Java 육십 두걸음 상속 특징
§ Java 육십 세걸음 IS 관계
§ Java 육십 네걸음 상속 기초 문제
§ Java 육십 다섯걸음 참조 자료형 변환 기초
§ Java 육십 여섯걸음 참조 자료형 변환 심화 1
§ Java 육십 일곱걸음 참조 자료형 변환 심화 2
§ Java 육십 여덟걸음 Method Overriding 기초
§ Java 육십 아홉걸음 Method Overriding 심화
§ Java 칠십 걸음 Method super 란?
§ Java 칠십 한걸음 equals ?
§ Java 칠십 두걸음 final ?
§ Java 칠십 세걸음 추상화
§ Java 칠십 네걸음 abstract class
§ Java 칠십 다섯걸음 interface
§ Java 칠십 여섯걸음 추상화 심화
§ Java 칠십 일곱걸음 추상화 문제
§ Java 칠십 여덟걸음 interface 활용

Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나