TIL

TIL : 2024/08/01 Java Generic

banasu0723 2024. 8. 1. 23:57

TIL 쓰기 전 오늘의 목표 !

  • 목표
    • 3주차 과제하고 4주차 강의까지 듣기  ok
    • 알고리즘 코드카타 2문제 풀기 → ok

 

<  17.  Generic  >

 

  • Generic 제네릭 
    • 제네릭은 클래스 또는 메서드에 사용 가능
    • 제네릭 타입을 원시 타입이라 한다
    • static 필드는 사용 불가, 배열도 사용 불가
// 1. 제네릭은 클래스 또는 메서드에 사용가능, <>안에 타입 명시, 이때 T를 타입변수라고 한다
public class Generic<T> {
    // 2. 내부 필드에 타입 저장됨 main 에서 선언된..
    private T t;
    // 3.
    public T get() {
        return this.t;
    }

    public void set(T t) {
        this.t = t;
    }

    public static void main(String[] args) { //T에 String이 들어간다
        // 4.
        Generic<String> stringGeneric = new Generic<>();
        // 5.
        stringGeneric.set("Hello World");

        String tValueTurnOutWithString = stringGeneric.get();

        System.out.println(tValueTurnOutWithString);
    }
}

 

  • 다수의 타입 변수 사용 가능
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. <?> : 제한 없음
public class ParkingLot<T extends Car> { ... }

ParkingLot<BMW> bmwParkingLot = new ParkingLot();
ParkingLot<Iphone> iphoneParkingLot = new ParkingLog(); // error!

 

 


 

<  18. Java의 Collection 정리 >

 

 

 

 

 

 

※ Wrapper 객체 : 원시 타입을 추상화시킴

 

 

Integer num = new Integer(17);  // Boxing
int n = num.intValue(); // UnBoxing

Character ch = 'X'; // AutoBoxing
char c = ch; // AutoUnBoxing

 

 

 

 


오늘 팀과제가 나왔다 !

회의를 하다보니 시간이 훌쩍 흘렀다..........

알고리즘 코드타카는 2문제 풀었고, 이문제들 모두 쉬워서 풀이는 skip 한다 !

내일 팀과제 코드를 짜고 강의를 마무리할 계획이다~!