Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- REST API 규칙
- jpa회원가입
- 빈생성안됨
- jwt메서드
- json gson 차이
- jpa에러
- ERD 작성
- git
- @IdClass
- REST란
- JoinColumn
- Q 클래스
- 최종 프로젝트
- github
- json
- 스프링부트오류
- JPA
- 복합키
- Filter
- Error creating bean with name
- uncheck Exception
- queryDSL
- Unsatisfied dependency
- 스프링 부트 기능
- spring서버
- JPA주의사항
- 스프링 부트 공식 문서
- 1차캐시
- 인텔리제이
- Spring Spring boot 차이
Archives
- Today
- Total
Everyday Dev System
4주차 공부 - Generic 본문
1. 제네릭의 효용
- 첫 번째로 제네릭의 효용은 타입 언어에서 “중복되거나 필요없는 코드를 줄여주는 것” 입니다.
- 두 번째 제네릭의 효용은 그러면서도 타입 안정성을 해치지 않는 것 입니다.
2. Generic 사용법
1. 제네릭은 클래스 또는 메서드에 사용 가능하다.
2. <> 안에 들어가야 할 타입을 명시한다. 이를 타입변수라고 부른다.
** T , U , V , E를 많이 활용함.
3. method의 return type도 2번에 입력한 타입과 동일할 수 있음.
아래 코드 참조
public class Generic<T> {
private T t;
public T get() {
return this.t;
}
}
public class Generic<T> { ... }
위 클래스를 제네릭을 사용한 클래스로, 제네릭 클래스라고 부른다.
제네릭 클래스를 원시 타입 이라고도 한다.
3. 제네릭의 제한
1. 객체의 static 멤버에 사용 할 수 없습니다.
타입 변수는 인스턴스 변수로 간주되기 때문에 static 멤버로 사용 불가함.
static T get () { ... } //에러
static void set(T t) { ... } //에러
2. 제네릭 배열 생성 할 수 없습니다.
4. 제네릭의 문법
1. 다수의 타입 변수를 사용할 수 있습니다.
public class Generic<T, U, E> {
public E multiTypeMethod(T t, U u) { ... }
}
Generic<Long, Integer, String> instance = enw Generic();
instance.multiTypeMethod(longVal, integerVal);
2. 다형성 즉 상속과 타입의 관계는 그대로 적용된다.
- 대표적으로 부모 클래스로 제네릭 타입변수를 지정하고, 그 안에 자식클래스를 넘기는 것은 잘 동작한다.
3. 와일드 카드를 통해 제네릭의 제한을 구체적으로 정할 수 있습니다.
와일드카드는 ?를 의미함.
- . <? extends T> : T와 그 자손들만 사용 가능
- <? super T> : T와 그 조상들만 가능
- <?> : 제한 없음
public class ParkingLot<T extends Cat> { ... }
--> Car 클래스 타입과 그 자식 클래스 타입들만 가능
** 위와 같이 제한하는 이유는 다형성 때문이다.
4. 메서드를 제네릭을 별도로 선언 가능
- 해당 메서드에만 적용되는 제네릭 타입을 선언하여 사용 가
public static <T extends Comparable><? super T>> void sort(List<T> list)
'내배캠 초기 학습 > Java 문법 종합반' 카테고리의 다른 글
4주차 과제 : 계산기 예외 처리 (0) | 2023.05.26 |
---|---|
3주차 과제 - 계산기 구현 (0) | 2023.05.25 |
4주차 공부 - List 타입 (0) | 2023.05.24 |
4주차 공부 - 예외처리 (0) | 2023.05.24 |
Java 문법 종합반 - 1,2주차 (2) | 2023.05.22 |