24.08.07

윤지현·2024년 8월 7일

TIL

목록 보기
35/75
  • Generic 알아보기
-------------------------------------------------------
🔻 제네릭 문법 살펴보기
   - 클래스 이름 뒤에 <> 문법 안에 들어가야 할 타입 변수를 지정
   - 타입 변수의 이름을 T로 사용하는 이유는 일종의 컨벤션
-------------------------------------------------------
🔻 제네릭 용어 정리하기
	---------------------------------
	public class Generic<T> { ... }
	Generic<String> stringGeneric = new Generic<>();
    ---------------------------------
   - Generic<T>의 클래스처럼, 제네릭을 사용한 클래스를 제네릭 클래스라고 합니다.
   - 제네릭에서 <>사이에 들어가는 변수명 T는 타입 변수라고 합니다.
   - Generic 클래스를 원시 타입이라고 합니다.
-------------------------------------------------------
🔻 제네릭의 제한
   - 객체의 static 멤버에 사용할 수 없습니다.
   - 제네릭 배열을 생성할 수 없습니다.
-------------------------------------------------------
🔻 제네릭의 문법
   - 다수의 타입 변수를 사용
   - 제네릭 배열을 생성할 수 없습니다.
	---------------------------------
	public class Generic<T, U, E> {
    public E multiTypeMethod(T t, U u) { ... }
	Generic<Long, Integer, String> instance = new Generic();
	instance.multiTypeMethod(longVal, intVal);
    ---------------------------------
    - 다형성 즉 상속과 타입의 관계는 그대로 적용됩니다.
    - 와일드카드를 통해 제네릭의 제한을 구체적으로 정할 수 있습니다.
		1. <? extends T> : T와 그 자손들만 사용 가능
		2. <? super T> : T와 그 조상들만 가능
		3. <?> : 제한 없음
    - 메서드를 스코프로 제네릭을 별도로 선언할 수 있습니다. 
-------------------------------------------------------
  • Collection 다시보기
-------------------------------------------------------
🔻 오류?
	---------------------------------
   - // 실제 java.util의 List 코드
public interface List<E> extends Collection<E> {
		int size();
    boolean isEmpty();
		...
		boolean addAll(Collection<? extends E> c);
		boolean add(E e);
		...
}
	---------------------------------
    - List 인터페이스는 제네릭 인터페이스입니다.
	- 타입 변수 E는 리스트에 저장되는 데이터의 타입을 타입 변수로 선언했습니다.
	- 실제로 List 속성을 가지는 구현체들에 있는 add() 메소드 같은 경우, 리스트 인터페이스에 지정한 E라는 타입을 추가하는 데 사용됩니다.
-------------------------------------------------------
🔻 예외?
   - 일반적으로 회복이 가능한 문제
   - 현실적으로 코드 레벨에서 할 수 있는 문제 상황에 대한 대응은 “예외 처리”
-------------------------------------------------------
🔻 Collection 다시 보기

  • Wrapper 객체
-------------------------------------------------------
🔻 오토 박싱, 오토 언박싱
	---------------------------------
   	Integer num = new Integer(17);  // Boxing
	int n = num.intValue(); // UnBoxing
	Character ch = 'X'; // AutoBoxing
	char c = ch; // AutoUnBoxing
	---------------------------------
-------------------------------------------------------

profile
첫 시작

0개의 댓글