Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 불친절한SQL프로그래밍
- 시큐어코딩
- 자바연습문제
- DispatcherServlet
- Spring
- REGEXP_SUBSTR
- 자바의정석
- 이것이자바다
- 자바공부
- 제네릭
- 스프링
- 스프링 핵심원리
- 스프링입문
- 김영한
- Numpy
- docker
- 자바의정석 연습문제
- 분석함수
- 불친절한 SQL 프로그래밍
- JPA
- Python
- 스프링 부트와 JPA
- Secure Coding
- java
- 서블릿
- 계층 쿼리
- 인프런
- inflearn
- Java의정석
- 스프링MVC
Archives
- Today
- Total
Continuous Challenge
[이것이 자바다] 제한된 타입 파라미터 본문
728x90
728x90
모든 타입으로 대체할 수 없고, 특정 타입과 자식 또는 구현 관계에 있는 타입만 대체할 수 있는 타입 파라미터를 제한된 타입 파라미터(Bounded type parameter) 라고 한다.
public <T extends 상위타입> 리턴타입 메소드(매개변수, ...) {...}
상위 타입은 클래스뿐만 아니라 인터페이스도 가능하다.
public static <T extends Number> boolean compare(T t1, T t2) {
double v1 = t1.doubleValue(); //Number의 doubleValue() 메소드 사용
double v2 = t2.doubleValue();
return (v1 == v2);
}
위 코드는 Number 타입과 자식 클래스(Byte, Short, Integer, Long, Double)에만 대체 가능한 타입 파라미터를 정의한 것이다.
타입 파라미터가 Number 타입으로 제한되면서 Object의 메소드뿐만 아니라 Number가 가지고 있는 메소드도 사용할 수 있다.
public class GenericExample {
//제한된 타입 파라미터를 갖는 제네릭 메소드
public static <T extends Number> boolean compare(T t1, T t2) {
//T의 타입을 출력
System.out.println("compare(" + t1.getClass().getSimpleName() + ", " +
t2.getClass().getSimpleName() + ")");
//Number의 메소드 사용
double v1 = t1.doubleValue();
double v2 = t2.doubleValue();
return (v1 == v2);
}
public static void main(String[] args) {
//제네릭 메소드 호출
boolean result1 = compare(10, 20);
System.out.println(result1);
System.out.println();
//제네릭 메소드 호출
boolean result2 = compare(4.5, 4.5);
System.out.println(result2);
}
}
compare(Integer, Integer)
false
compare(Double, Double)
true
728x90
728x90
'Study > 이것이 자바다' 카테고리의 다른 글
[이것이 자바다] 멀티 스레드 (0) | 2023.04.11 |
---|---|
[이것이 자바다] 와일드카드 타입 파라미터 (0) | 2023.04.03 |
[이것이 자바다] 제네릭 메소드 (0) | 2023.04.03 |
[이것이 자바다] 제네릭 타입 (0) | 2023.03.21 |
[이것이 자바다] 제네릭이란? (0) | 2023.03.15 |
Comments