프로그래밍언어/JAVA

제너릭 실습

Isaac87 2015. 2. 13. 13:20

class Rectangle <T extends Number>
{
 T x;
 T y;
 T w;
 T h;
 
 void setX(T x) { this.x = x; }
 void setY(T y) { this.y = y; }
 void setW(T w) { this.w = w; }
 void setH(T h) { this.h = h; }
 T getX() { return x; }
 T getY() { return y; }
 T getW() { return w; }
 T getH() { return h; }
 
 Number calcArea()
 {
  if(w instanceof Integer)
   return w.intValue() * h.intValue();
  else
   return w.doubleValue()*h.doubleValue();
 }
}

public class Test {
 public static void main(String[] args) {
  Rectangle<Integer> r1 = new Rectangle<>();
  Rectangle<Double> r2 = new Rectangle<>();
  
  r1.setH(100);
  r1.setW(200);
  
  r2.setW(123.45);
  r2.setH(456.78);
  
  System.out.println(r1.calcArea());
  System.out.println(r2.calcArea());
  
  
 }
}