首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法强制转换org.apache.batik.bridge.UpdateManager

无法强制转换org.apache.batik.bridge.UpdateManager
EN

Stack Overflow用户
提问于 2018-12-14 21:25:54
回答 1查看 28关注 0票数 0

我正在通过重写方法修补org.apache.batik.bridge.UpdateManager

代码语言:javascript
复制
@Override
public void interrupt() { ... }

为了避免

代码语言:javascript
复制
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)

新类是

代码语言:javascript
复制
public class SVGUpdateManager extends org.apache.batik.bridge.UpdateManager

从JSVGCanvas调用时

代码语言:javascript
复制
SVGUpdateManager um = (SVGUpdateManager) getUpdateManager();

我得到一个java.lang.ClassCastException,org.apache.batik.bridge.UpdateManager不能强制转换为SVGUpdateManager

EN

回答 1

Stack Overflow用户

发布于 2018-12-14 22:15:16

好的,根据你的评论,问题是你不能将一个超类转换为一个子类,只能将一个子类转换为一个超类。

例如:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53780659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档