2006년 1월 22일 일요일

Java의 Graphics 클래스에서 어떠한 코드가 실행되었는지 알려면?

Java Graphics2D 클래스를 상속받는 클래스를 만든 후 system.out을 사용해서 호출되는 메소드와 인자를 출력하면 됩니다. 이 때 주의할 점은 다음과 같습니다.

1. 메소드의 괄호를 제대로 닫았는지 확인한다~

public class TestGraphics extends Graphics2D{
...
public void translate(int x, int y) {
System.out.println("g2.translate(" + x + ", " + y + ");");
g.translate(x, y);
}
...
}

2. flat가 인자로 들어온 경우에 주의해서 다시 써준다.
System.out.println("g2.draw(new Line2D.Float(" + l.x1 + "f, " + l.x2 + "f, " + l.y1 + "f, " + l.y2 + "f));");

3. GeneralPath 같은 클래스의 경우 저장된 Point를 얻어오기 힘들기 때문에 새로 Wrapping하는 클래스를 또 만든다(ㅡㅡ;; )

※ 주의할 점: 이러한 잔머리로 얻은 출력 코드는 최적화 되지 않기 때문에 리팩토링이 반듯이 필요합니다. (뽑아낸 코드만 대략 4,000줄이 넘군요. ㅋㅋ)
※ 만들 때 개발자의 편리함만 추구하지 말고, 성능도 고려해서 만들자!!!!

댓글 5개:

  1. Hm~ ^^. It's a good idea~

    답글삭제
  2. Proxy 클레스를 사용하면 100줄 이하로 만들 수 있지 않을까요? ㅎㅎ

    답글삭제
  3. abstract class 라 안되는 군요. ㅡ,.ㅡ

    답글삭제
  4. 넵.. GeneralPath의 경우 final이기도 하구요 ^^

    답글삭제