2

AffineTransform を実装しようとすると、このクラス キャスト例外が発生します。

AffineTransform への呼び出し:

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.

私はこのように電話をかけます:

YingYang newShape = (YingYang) shape.moveToAndRotate(newLoc1.x, newLoc1.y, theta);

これはエラーです:

java.lang.ClassCastException: java.awt.geom.Path2D$Double は Animation.YingYang にキャストできません

YingYang がシェイプ 1 を実装してからのアイデアは、これをキャストする必要はまったくないはずだと思うでしょう。重要な概念がありませんか?

4

1 に答える 1