无法转换org.apache.batik.bridge.UpdateManager

时间:2018-12-14 13:25:54

标签: java dom batik

我正在通过覆盖方法修补org.apache.batik.bridge.UpdateManager

@Override
public void interrupt() { ... }

避免

java.lang.IllegalStateException: RunnableQueue not started or has exited
at org.apache.batik.util.RunnableQueue.invokeLater(RunnableQueue.java:277)
at java.lang.Thread.run(Unknown Source)

新班级是

public class SVGUpdateManager extends org.apache.batik.bridge.UpdateManager

从JSVGCanvas调用时

SVGUpdateManager um = (SVGUpdateManager) getUpdateManager();

我收到一个java.lang.ClassCastException,org.apache.batik.bridge.UpdateManager无法转换为SVGUpdateManager

1 个答案:

答案 0 :(得分:1)

好的,根据您的评论,问题在于您不能将超类转换为子类,而只能将子类转换为超类。

例如:

public class Main {

    public static void main(String[] args) {
        A a = new A();
        B castedA = (A) a; // casting is unnecessary
        B b = new B();
        A castedB = (A) b; // class cast exception
    }

    public static class B {

    }

    public static class A extends B {

    }
}

我认为您应该实例化UpdateManager,并将其包装在自定义类中(而不是扩展其功能)。然后代理原始实例的功能。

或者您可以尝试this