2D 게임을 만들어 Java 기능을 향상 시키려고합니다. 나는 기본적인 게임을 만드는 것에 성공했고, 지금 내가 개선 할 수있는 것을보기 위해했던 일로 돌아가고 있으며, 코드를 약간 재구성하고있다. 이전에 GraphicsObject 객체를 가져야하는 GameObject (내 게임을 위해 만든 다른 클래스)를 그리는 drawObject 메서드가 있었지만 지금은 Graphics2D를 확장하고 "draw (X) "메서드를 사용하여 Graphics2D 객체를 전달할 필요가 없도록 확장 클래스에 만들었지 만 어려움이 있습니다.Graphics2D 확장 - 캐스팅 예외 발생
다음과 같이 클래스를 시작합니다 : public abstract class GameGraphics extends Graphics2D
. 이클립스에서는 아무 에러도 나타나지 않는다. 그러나 나는 그것을 실행한다. 렌더링을 할 때 sun.java2d.SunGraphics2D
을 확장 한 클래스의 인스턴스에 캐스트 할 수 없다는 오류가 나타나면 실행한다.
오류가 다음 줄에 나타납니다 : GameGraphics graphics = (GameGraphics) strategy.getDrawGraphics();
내가의 Graphics2D에서 특정 방법을 사용할 필요가 있다는 사실에도 불구하고, 나는 무슨 일이 일어날 지보고 대신 그래픽을 확장하기 위해 시도했다. Graphics2D 함수에 대한 호출을 수정하고 오류가 발견되지 않았지만, 실행했을 때 정확한 오류가 발생했습니다. 심지어 SunGraphics2D 부분도 동일했습니다.
명백한 문제는 Graphics2D를 확장하는 대신 클래스에 단순히 Graphics2D 인스턴스가 포함되도록하는 것이 분명하지만, 가능하다면 확장하는 것이 훨씬 더 낫습니다.
도움이 될 것입니다.
GameGraphics graphics = (GameGraphics) strategy.getDrawGraphics();
그래픽스 전략 객체가 GameGraphics의 대상이 아닌에서 얻은 객체와 같은 캐스팅하는 것은 그렇게하지 않습니다
당신은'Graphics2D'를 확장 할 의도가 없습니다. 플랫폼 고유 버전은이를 확장 한 버전입니다. 상속에 비해 컴포지션을 선호합니다.이 경우에는 선택의 여지가 없습니다. – Kayaman
대단히 감사합니다! 그럴거야. – VortixDev