Categories: 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

Recent Posts

Java 총정리[97. Java GUI]

Java GUI Java GUI에 대해서 이번 걸음에서 배움으로써 GUI에 전반적인 지식과 Java GUI를 구현하는 방법…

4개월 ago

Java 총정리[96. Java TCP 통신 프로그램 구현]

Java TCP 통신 프로그램 구현 Java TCP 통신 프로그램 구현을 위해서 이전 걸음에서 쓰레드에 대한…

5개월 ago

Java 총정리[95.쓰레드 통신]

쓰레드 통신 이전 걸음에서 쓰레드의 임계영역에 대해서 같이 공부를 했습니다. 동기화에 대한 개념을 계속적으로 하고…

5개월 ago

Java 총 정리[94. 쓰레드 임계영역]

쓰레드 임계영역 이전 걸음에서 쓰레드의 동기화에 대해서 같이 공부를 했습니다. 동기화에 대한 전반적인 내용을 공부하고…

6개월 ago

Java 총 정리[93. 쓰레드 동기화]

쓰레드 동기화 이전 걸음에서 계속 쓰레드에 대해서 공부를 하고 있습니다. 쓰레드는 상당히 중요한 개념이기 때문에…

6개월 ago

Java 총 정리[92. 쓰레드 join()]

쓰레드 join() 이전 걸음에서 쓰레드의 전반적인 실행 흐름에 대해서 공부를 했습니다. 이제 배운 실행 흐름…

6개월 ago

This website uses cookies.