질문) 제네릭 프로그래밍이란?
정답!
- 제네릭 프로그래밍(generic programming) 은 다양한 종류의 데이터를 처리할 수 있는 클래스와 메소드를 작성하는 기법을 말함.
제네릭(generic)의 특징 정리하기
- 참고로, 제네릭은 Java 버전 1.5 부터 추가된 기능.
- 복잡한 어플리케이션을 개발할 때 발생하는 여러가지 버그들을 많이 줄일 수 있음.
- 보통 Object 타입의 변수를 사용하는 것보다 안전하고 사용하기 쉬운특징을 지님.
- Object는 모든 클래스의 상위 클래스..
- Object 를 사용하면, 데이터를 꺼낼 때마다 항상 형변환이 들어가야하는 단점...!!
질문) 어떤 종류의 객체도 저장할 수 있는 배열은 어떻게 만들까?
정답!
- ArrayList 클래스, ArrayList<T>
참고로, 위의 "T" 의 의미는 배열에 저장되는 타입을 나타내는 매개 변수를 의미함.
즉, 제네릭을 한마디로 말하자면....
- 클래스를 정의할때, 클래스 안에서 사용되는 자료형을 구체적으로 명시하지 않고, "T" 와 같이 기호로 적어놓는 것!!
다시말해서, 객체를 생성할때, T자리에 구체적은 자료형을 적어주면 됨.
질문) 제네릭을 어떻게 이용할까?
제네릭 클래스에서는 타입을 변수로 표시함.
- 이것을 우리는 "타입매개변수" 라고 말을 하고, 타입매개변수는 객체 생성시에 프로그래머에 의해서 결정됨.
보통선언은 아래와 같이 함.
class MagicBox<T> {
private T data;
public void setData(T data) { this.data = data; }
public T getData() { return data; }
}
그리고, 타입 매개 변수의 값은 객체를 생성할 경우, 구체적으로 정해진다.
아래는 예시이다.
1. Integer 의 경우
MagicBox<Integer> mb = new MagicBox<Integer>();
mb.setData(118);
Integer data = mb.getData();
2. String 의 경우
MagicBox<String> mb = new MagicBox<String>();
mb.setData("Hello, Magic World!!");
String data = mb.getData();
제네릭에서, 다이아몬드란 무엇일까?
다이아몬드는 자바 SE 7버전부터 제네릭클래스의 생성자를 호출할때, 타입 인수를 구체적으로 주지 않아도 됨!!
즉, 컴파일러는 문맥에서 타입을 추측하게되고, 바로 그때 사용하는것이 다이아몬드 <> 라고 합니다.
예를들면 아래와 같이 사용합니다.
// 아래와 같이 생성자 호출시 구체적인 타입을 정해주지 않아도 됨.
MagicBox<Integer> mb = new MagicBox<>();
이상입니다.
'좋아하는 것_매직IT > 26.Java' 카테고리의 다른 글
Java 스트림(Stream) 깔끔하게 정리하기 (0) | 2023.12.27 |
---|---|
openjdk 최신버전 다운로드 받기 (0) | 2023.04.05 |
ChatGPT 연동 JAVA로 구현해보기 (ft.python, nodejs) (3) | 2023.02.14 |
HttpServer를 활용한 간단한 Mock 서버 구축하기 (0) | 2022.09.13 |
면접때 꼭 물어보는 JAVA(JVM) 주요 메모리 영역 깔끔하게 정리하기 (0) | 2022.06.05 |