👩🏻💻 Programming/Java
Generic 메소드 활용
한국의 메타몽
2022. 2. 4. 03:52
Generic 메소드의 활용
1. 두 점을 입력받아 한 점을 왼쪽위 모서리, 다른 한쪽을 오른쪽아래 모서리로 지정한다.
2. 사각형의 넓이를 double 형으로 계산하여 출력한다. 단, 입력되는 모서리의 값은 Integer일수도 있고, double일수도 있다.
코드 구성
- GenericMethod : 두 점을 통해 사각형의 넓이를 구해 출력할 main 클래스
- Point : 두 점을 저장할 제네릭 클래스
사각형의 넓이를 구하는 코드 예제
[ Point ]
package ch07;
public class Point <T,V>{
T x;
V y;
Point(T x, V y){
this.x = x;
this.y = y;
}
public T getX(){
return x;
}
public V getY(){
return y;
}
}
[ GenericMethod ]
package ch07;
public class GenericMethod {
public static <T,V> double makeRectangle(Point<T,V>p1, Point<T,V>p2){
double left = ((Number)p1.getX()).doubleValue(); // 1
double right = ((Number)p2.getX()).doubleValue();
double top = ((Number)p1.getY()).doubleValue();
double bottom = ((Number)p2.getY()).doubleValue();
double width = right-left;
double height = bottom - top;
return width * height;
}
public static void main(String[] args) {
Point<Integer, Double> p1 = new Point<>(0, 0.0);
Point<Integer, Double> p2 = new Point<>(10, 9.0); // <> 타입 내부는 비워둬도 OK
double size = makeRectangle(p1,p2);
System.out.println(size);
Point<Integer, Integer> p3 = new Point<>(5,5);
Point<Integer, Integer> p4 = new Point<>(10,10);
size = makeRectangle(p3,p4);
System.out.println(size);
}
}
* 1 ) 추상 클래스 Number는 클래스 BigDecimal, BigInteger, Byte, Double, Float, Integer, Long 및 Short 슈퍼 클래스이다.
Number 클래스의 각 서브 클래스는 주어진 수치를 형태 byte, double, float, int, long 및 short로 변환하는 메서드를 제공하지 않으면 안된다. (참고 링크 : http://cris.joongbu.ac.kr/course/java/api/java/lang/Number.html)
[ 결과 ]
90.0
25.0