1. 무엇이든 담을 수 있는 제네릭 프로그래밍
제네릭 자료형의 정의
1. 클래스에서 사용하는 변수의 자료형이 여러 개일 수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정할 수 있도록 선언
2. 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식
3. 컬렉션 프레임워크에서 많이 사용
제네릭 타입을 사용하지 않는 경우의 예
이렇게 개별 작성하거나
Object를 이용하거나 그러나! 이렇게 하면
이 코드를 실행하면 getMaterial시 데이터형이 Object라서 오류가 난다!(return이 Object 데이터형으로 나오는거니까)
-> 그래서 (Powder)printer.getMaterial(); 이거로 형 변환을 해줘야해
위와 같은 귀찮음을 덜어내려고 재네릭 프로그래밍을 사용!
자료형 매개변수 T( type parameter)
이 클래스를 사용하는 시점에 실제 사용할 자료형을 지정(static 변수는 사용 x)
-> 위에서는 GenericPrinter 가 제네릭 자료형
재네릭 프로그래밍 사용시
위와 같이 내가 사용하고자 하는 데이터형을 <> 안에 넣으면 된다.
new 이후 <> 안에도 원래 데이터형을 써야하지만 이제는 안써도 괜찮다.
// 다이아몬드 연산자 //
<> 를 다이아몬드 연산자라 함
ex) ArrayList list = new ArrayList<>(); -> 다이아몬드 연산자 내부에서 자료형은 생략가능
2. 제네릭 메서드 사용하기
제네릭 메서드란?
자료형 매개 변수를 메서드의 매개변수나 반환값으로 가지는 메서드
1. 자료형 매개 변수가 하나 이상인 경우도 있음
2. 제네릭 클래스가 아니어도 내부에 제네릭 메서드는 구현하여 사용할 수 있음
3. <T extends 클래스> 사용하기
상위 클래스의 필요성
1. T 자료형의 범위를 제한 할 수 있다
2. 상위 클래스에서 선언하거나 정의하는 메서드를 활용할 수 있음
3. 상속을 받지 않는 경우 T는 Object로 변환되어 Object 클래스가 기본으로 제공하는 메서드만 사용 가능
T extends 를 사용한 프로그래밍
ex) GenericPrinter에 material 변수의 자료형을 상속받아 구현
T에 무작위 클래스가 들어갈 수 없게 Material 클래스를 상속받은 클래스로 한정
'Programming 언어 > JAVA' 카테고리의 다른 글
18. 자바에서 제공되는 자료구조 구현 클래스들 - 컬렉션 프레임워크 (0) | 2023.09.01 |
---|---|
16. 배열 및 연결 리스트 구현하기 (0) | 2023.09.01 |
15. 자바와 자료구조 (0) | 2023.08.31 |
14. String 클래스 및 Class 클래스 (0) | 2023.08.30 |
13. Object 클래스 및 메서드 활용 (0) | 2023.08.30 |