제네릭을 클래스에 적용한 것과 다르지 않다.
타입을 지정하지 않고 사용시에 적용해서 사용할 수 있게 한다는 것에 의미가 있다고 본다. (범용성?!)
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에 따라서 다르겠지만
이놈의 중괄호가 사방에 있다보니 범위가 헷갈릴 일이 많다
주석을 간결하고 깔끔하게 핵심만 짚으며서 쓰는 법을 공부해야겠다.
'Java' 카테고리의 다른 글
람다식 - 연습1(매개 변수와 리턴값이 없는 람다식) (0) | 2021.04.10 |
---|---|
람다식(Lambda Expressions) 기본 문법 (0) | 2021.04.10 |
람다식(Lambda Expressions) (0) | 2021.04.10 |
제네릭(Generic) multy type (0) | 2021.04.10 |
제네릭(Generic) Type (0) | 2021.04.10 |