본문 바로가기
Java

제네릭(Generic) method

by 죠스^ 2021. 4. 10.

제네릭을 클래스에 적용한 것과 다르지 않다. 

 

타입을 지정하지 않고 사용시에 적용해서 사용할 수 있게 한다는 것에 의미가 있다고 본다. (범용성?!)

 

static method로 예문을 보는 도중 이걸 어떻게 봐야하는지 헷갈렸다....

 

(1) public <T> Box<T> boxing(T t) { ... } (외계어가 따로 없다 증말...)

 

(2) public static <K, V> boolean compare ( Pair<K, V> p1, Pair<K, V> p2){ ... }

 

처음에 이런 코드를 보니 뭔 소린가 싶었다.

 

1. 처음 나오는 <>이부분은 타입 파라미터이다. 여기서 타입을 결정한다. 

 

2. (1)에서 Box<T>는 제네릭 클래스이다. 반환값으로 클래스를 준다는 것이다. 

 

3. method 이름 뒤의 ( )는 매개변수이다. 처음에 지정한 타입에 맞게, 함수를 사용해야한다. 

   (제네릭 클래스가 올지 타입 파라미터에 맞는 변수가 올지 참..) 위화감 없이 읽히도록 자주 봐야겠다.

 

<제네릭 클래스 Pair> 이미지 - 1

constructor, getter, setter 는 자동생성 해주는 기능이 있는데 제네릭에서도 되는지 안해봤다. 

 

나중에 해봐야겠다. 

 

<제네릭 메소드> 이미지 - 2

Util 클래스를 만들어 static method를 만들었다. 그것도 generic으로 !

 

작성하다 느낀 부분은 처음 Pair 클래스 안에 작성해도 되지 않았을까? 싶다.

 

제네릭 메소드에서 작용하는 부분을 강조하고 싶었던걸까?

 

<제네릭 클래스, 메소드> 이미지 - 3

클래스의 static method는 객체를 생성하지 않고 사용할 수 있다는 점을 기억해야한다. 

 

접근제한자 public, protected, default, private에 따라서 다르겠지만 

 

이놈의 중괄호가 사방에 있다보니 범위가 헷갈릴 일이 많다 

 

주석을 간결하고 깔끔하게 핵심만 짚으며서 쓰는 법을 공부해야겠다.