我正在通过覆盖方法修补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
答案 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