kh day 033
오늘은 sqldveloper를 설치했다. sqldveloper은 스쿱으로 설치가 불가능해서 설치파일을 직접 다운받아서 설치했다. 이후에 on-premise 방식으로 로컬에 설치한 oracle database XE를 삭제했다. 약간의 더미데이터가 남긴했지만 잘 지워진거 같다. 이후에는 시간이 빠듯해서 SQL문은 select문을 한문장 쳐보고 끝났다 ㅋㅋ; 남은 시간은 다시 자바 언어의 제네릭을 배웠다! 제네릭이 간단해보이면서도 나름 공부해야할 부분도 적지 않은 것 같다. 그래도 생각보단 할만한 것 같아 다행이다!
---
제네릭 타입의 종류 3가지
(1) 제네릭 클래스
(2) 제네릭 인터페이스
(3) 제네릭 메소드
제네릭 타입이란?
타입을 파라미터로 가지는 클래스와 인터페이스 (메소드는 나중에 생각하자)
선언 시 클래스 또는 인터페이스 이름 뒤에 “<>” 부호 붙임
“<>” 사이에는 타입 파라미터 위치
타입 파라미터
일반적으로 대문자 알파벳 한 문자로 표현 ex) T, U, R
개발 코드에서는 타입 파라미터 자리에 구체적인 타입을 지정해야
제네릭 타입을 사용하지 않은 경우
빈번한 타입 변환 발생 → 프로그램 성능 저하
제네릭 타입 사용한 경우
클래스 선언할 때 타입 파라미터 사용
컴파일 시 타입 파라미터가 구체적인 클래스로 변경
* 제네릭 타입 파라미터에 *구체적인 참조타입 (구체타입)*을 언제 지정해야하는가?
(1) 제네릭 타입 (=클래스/인터페이스/메소드) 선언할 때는 타입 파타미터 T, U, R 등을 단문자로 표시
-> 이 때 구체타입을 지정하는 것 아님!!!
(2) 제네릭 타입을 사용할 때 구체타입을 지정한다
- new 연산자로 제네릭 타입의 객체를 생성할 때
- 제네릭 타입을 메소드/생성자의 매개변수의 타입으로 지정(선언)할 때
ex) String name = "John";
- 제네릭 메소드를 호출 할 때, "구체타입명을 인자로 전달"
--
멀티 타입 파라미터
제네릭 타입은 두 개 이상의 타입 파라미터 사용 가능
각 타입 파라미터는 콤마로 구분
ex) class<K, V, …> { … }
interface<K, V, …> { … }
자바 7부터는 다이아몬드 연산자 사용해 간단히 작성과 사용 가능
Product<Car, String> product2 = new Product<>();




---
제네릭 메소드
매개변수 타입과 리턴 타입으로 타입 파라미터를 갖는 메소드
제네릭 메소드 선언 방법
리턴 타입 앞에 “<>” 기호를 추가하고 타입 파라미터 기술
타입 파라미터를 리턴 타입과 매개변수에 사용
public <타입파라미터> 리턴타입 메소드명(매개변수) {...}
public <T> Box <T> boxing(T t) {...}
제네릭 메소드 호출하는 두 가지 방법
1. 리턴타입 변수 = <구체적타입> 메소드명(매개값);
- 명시적으로 구체적 타입 지정
Box<Integer> box = <Integer> boxing((100);
- 타입 파라미터를 명시적으로 Integer로 지정
2. 리턴타입 변수 = 메소드명(매개값);
- 매개값을보고 구체적 타입을 추정
Box<Integer> box = boxing((100);
- 타입 파라미터를 Integer로 추정



'국비학원' 카테고리의 다른 글
| [국비지원] KH 정보교육원 35일차 (0) | 2022.05.14 |
|---|---|
| [국비지원] KH 정보교육원 34일차 (0) | 2022.05.13 |
| [국비지원] KH 정보교육원 32일차 (0) | 2022.05.11 |
| [국비지원] KH 정보교육원 31일차 (0) | 2022.05.10 |
| [국비지원] KH 정보교육원 30일차 (0) | 2022.05.10 |