HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🌚
[New] 우기팀
/
득윤
득윤
/
❓
Java Generic
/
3️⃣
바운디드 타입
3️⃣

바운디드 타입

바운디드 타입 파라미터 (Bounded Type Parameters)

바운디드 타입 파라미터는 타입 인자의 타입을 제한하기 위해 사용한다.
<T extends B>
  • 타입 파라미터 T의 타입 인자를 B 의 하위 타입으로 제한함
  • 이때 extends 키워드는 확장(extends)과 구현(implements)의 의미를 모두 포괄한다.
public <U extends Number> void inspect(U u){ System.out.println("T: " + t.getClass().getName()); System.out.println("U: " + u.getClass().getName()); }
void Box.inspect(U u), T : Box 클래스의 타입 파라미터
inspect 메서드의 파라미터 u의 타입을 Number 의 서브 타입으로 제한함
이때 inspect 메서드에 Number의 서브 타입이 아닌 타입을 인자로 전달하면 컴파일 에러가 발생한다.
 
바운디드 타입 파라미터는 제네릭 메서드 뿐만 아니라 제네릭 타입에서도 활용될 수 있다.
또한 바운디드 타입 파라미터를 사용한 경우 타입 파라미터에서 바운드한 타입의 메서드를 호출할 수 있다.
public class NaturalNumber<T extends Integer> { private T n; public NaturalNumber(T n) { this.n = n; } public boolean isEven() { return n.intValue() % 2 == 0; } // ... }
제네릭 클래스 NaturalNumber 의 타입 인자 T는 Integer의 하위 타입으로 Bound 되었다. T 로 선언된 필드 n은 Integer의 메서드를 호출 할 수 있다.

다중 바운드 Multiple Bounds

<T extends B1 & B2 & B3>
  • T는 B1 의 서브 타입 이면서 B2, B3 의 서브 타입이어야함
  • 이때 다중 바운드 타입 (B1, B2, B3)에는 최대 하나의 클래스가 포함될 수 있으며 클래스가 포함 된 경우 가장 먼저 표기 되어야함