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
- java
- JPQL
- Servlet
- QueryDSL
- AOP
- JDBC
- Spring Boot
- 김영한
- Android
- Greedy
- 스프링
- kotlin
- http
- jpa
- spring
- Proxy
- 백준
- db
- 알고리즘
- Thymeleaf
- 인프런
- 스프링 핵심 원리
- Exception
- transaction
- 그리디
- springdatajpa
- 스프링 핵심 기능
- 자바
- pointcut
- SpringBoot
Archives
- Today
- Total
개발자되기 프로젝트
Generic Method 본문
1. Generic Method
- 자료형 매개변수를 메서드의 매개변수나 변환 값으로 가지는 메서드는
- 자료형 매개변수가 하나 이상인 경우도 있음.
- Generic class가 아니어도 내부에 generic method는 구현해서 사용이 가능.
- puiblic<자료형 매개 변수> 반환형 method 이름(자료형 매개변수..){ }
2. Generic Method 활용
- 두 점이 주어지면 두 점을 대각선으로 하는 직사각형의 넓이를 구해보자.
2.1 Point
- Point는 Integer, Double로 구성된다.
public class Point<T, V> {
T x;
V y;
public Point() {
}
public Point(T x, V y) {
this.x = x;
this.y = y;
}
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public V getY() {
return y;
}
public void setY(V y) {
this.y = y;
}
}
2.2 GenericMethod
- Point는 Integer, Double 등 여러 숫자 타입을 받을 수 있다.
- 이를 모두 double로 변환하여 사용한다.
public class GenericMethod {
public static <T extends Number, V extends Number> double makeRectangle(Point<T, V> p1, Point<T,V> p2){
double left = ((Number) p1.getX()).doubleValue();
double right = ((Number) p2.getX()).doubleValue();
double top = ((Number) p1.getY()).doubleValue();
double button = ((Number) p2.getY()).doubleValue();
double width = Math.abs(right - left);
double height = Math.abs(button - top);
return width*height;
}
}
3. Test
class GenericMethodTest {
Point<Integer, Double> p1 = new Point<>(2, 10.0);
Point<Integer, Double> p2 = new Point<>(5, 5.0);
@Test
void genericMethodTest(){
double size = GenericMethod.makeRectangle(p1, p2);
System.out.println("size = " + size);
Assertions.assertEquals(size, 15);
}
}
4. GitHub: 211024 Generic Method
'Java > 자료구조' 카테고리의 다른 글
List 인터페이스를 구현한 클래스, 활용 (0) | 2021.10.24 |
---|---|
컬렉션 프레임워크 (0) | 2021.10.24 |
<T extends Class> 사용 (0) | 2021.10.24 |
Generic Programming (0) | 2021.10.24 |
Queue 구현 (0) | 2021.10.24 |
Comments