클래스 레벨이 있고 메소드 레벨이 있다.

클래스레벨은 List같은 자료구조만 써도 익숙하니까 다음처럼 간단히 짚고 넘어가자.

public class MyStack<T> {
    // 클래스 전체에서 T를 사용할 수 있다
    private final List<T> elements = new ArrayList<>();
    public void push(T element) { … }
    public T pop() { … }
}

 

MyStack<T>에서 <T>는 Type Parameters 선언이라고 불린다.

 

근데 class는 제네릭이 아니면서 메소드 하나만 제네릭으로 만들경우는 다음처럼 타입선언을 왼쪽에 해줘야 한다.

private <T, R> Mono<CommonDto> executeWithMetrics(
    AdsEndpoints endpoint,
    R request,
    Mono<T> operation) { … }

<T, R> 부분을 이야기 하는건데 언뜻 보면 되게 헷갈리는데, 컴파일러에게 T와 R이라는 제네릭 타입을 쓸거야.. 라고 선언하는 부분이라고 보면 된다.

 

반응형

'Programming > JAVA' 카테고리의 다른 글

Reactor Context  (0) 2025.05.27
reactor #1  (1) 2024.01.01
BiFunction, Function을 사용한 함수형 프로그래밍  (0) 2024.01.01
java Optional  (1) 2023.11.04
java enum  (0) 2023.11.03

+ Recent posts