01-31 학습&숙제

한강섭·2025년 1월 31일

학습 & 숙제

목록 보기
14/104
post-thumbnail

긴 연휴가 끝나고 오랜만에 학습!! 중요한 Generic 배우는 날이므로 집중합시다!😎

Generic

뭐든지 담을 수 있는 박스 -> 어떤 것을 담고 있는지 표시해서 담기

다양한 타입의 객체를 다루는 메서드, 컬렉션 클래스에서 컴파일 시에 타입 체크
미리 사용할 타입을 명시해서 형 변환을 하지 않아도 되게 함

원래는 형변환 하기 전에 instance of로 메모리에 있는 지 확인하고 형변환을 해야 했었다
🔔 기존 방식 runtime에서 한번 체크하고 타입을 체크했음!!

🚨 그래서 컴파일 시에 타입 체크를 하기 위해서!! Generic 사용!

클래스에 선언된 Generic
클래스 또는 인터페이스 선언 시 <>에 타입 파라미터 표시!

public interface Interface_Name<T>{}

형인자(Type Parameter) -> 임의의 참조형 타입

T : reference Type
E : Element
K : Key
V : Value

객체 생성 시 변수쪽과 생성 쪽의 타입은 반드시 같아야 함

🚨 set 으로 객체를 받을 때는 다 받을 수 있게 (Object) 한다면
🚨 get으로 객체를 반환할 때는 Object 밖에 안됨!

그래서 T를 사용해서 선언한 후에 박스를 사용할 때(클래스를 선언할 때)
타입을 정해주면 이제 그 타입에 맞게만 받고 쓸 수 있다!!

주의사항
1. raw type 사용과 @SuppressWarning (최악의 경우에 사용)
헷갈리는 사용법

  1. 타입 파라미터는 인스턴스 레벨에서 결정됨
    클래스 레벨의 static 멤버에서는 사용할 수 없음

🚨 Generic은 런타임에서는 타입이 없다!!

  1. Generic을 이용한 배열 생성 불가
    🚨 만약 GenericBox< T >[]이 된다고 가정했을 때는 runtime에 GenericBox[]로 변경됨 !!

🔔 invariant 한번 확인해보기

Generic Method < P >

하 필기 했던거 날아가서 이 페이지에 문제가 있는거 같음 중요한 것만 적어두고 출간

?
? extends Person
? super Person

enum

논리적 오류 없애기 위해 사용

annotation

타겟 중요함 어노테이션 사용할 수 있는 부분 명명

숙제

B형 특강 대비 환경정비 + 예습

profile
기록하고 공유하는 개발자

0개의 댓글