AffineTransform 구현시이 클래스 캐스트 예외가 발생했습니다. 의 AffineTransform에Java 클래스 Cast Exception java.awt.geom.Path2D.Double
전화 :
이public Shape moveToAndRotate(double x, double y, double theta)
{
double cx = getBounds2D().getCenterX();
double cy = getBounds2D().getCenterY();
at.translate(cx, cy);
at.translate(x, y);
at.rotate(Math.toRadians(theta));
at.translate(-cx, -cy);
return at.createTransformedShape(yingYang);
}
이것은 사용자 정의 모양 클래스 (YingYang)에 있습니다.
public class YingYang implements Shape
{
private Area yingYang = new Area();
private AffineTransform at = new AffineTransform();
...
}
때 제가 YingYang에 반환 형식을 변경하는 경우 (도면 패널에서 또는 클래스 그 자체 내 중 하나 YingYang이 다시 캐스팅 할 때 나는 클래스 캐스트 예외가 전화를 걸 이제까지.
나는 호출과 같이합니다
가 java.lang.ClassCastException가 : java.awt.geom.Path2D $ 두 번이 애니 캐스트 할 수없는
YingYang newShape = (YingYang) shape.moveToAndRotate(newLoc1.x, newLoc1.y, theta);
이 오류입니다 ming.YingYang
잉잉 (YingYang)이 모양을 구현하기 때문에 어떤 아이디어라도 나는 이것을 전혀 던지면 안된다고 생각할 것입니다. 핵심 개념이 빠졌습니까?
같은 생성자 당신은 at''의 정의와 변수'shape'처럼 중요 비트를 왼쪽으로합니다. 우리는 당신이하고있는 것을보기에 충분한 코드를 보여줄 필요가 있습니다. –
YingYang은 Shape ...을 구현하지만 ...'createTransformedShape'는 Path2D를 반환합니다. 즉, YingYang 인스턴스가 길지는 않지만 YingYang과 관련이없는 전혀 새로운 모양의 오브젝트입니다. 그런 이유로 왜곡 할 수 없습니다. – Ash
오류가 무엇인지 확인하십시오. 분명히 [Path2D.Double]을 캐스팅하려고합니다 (http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Path2D.Double.html).)를 YingYang으로, Path2D를 YingYang으로 옮기지 않았습니다. – lealand