2

说真的,如果我这样投:

(SVGSVGElement) (((SVGImage)blabla).getDocument().getDocumentElement())

它有效,但如果我尝试

(SVGSVGElement)doc.getElementById(some_id)

我收到转换错误,但 getDocumentElement() 和 getElementById() 返回相同的类型org.w3c.dom.Element,我的全局目标是获取从文件加载的 svg-scene 上某些图像的 X 坐标,以便缩放场景以制作此图像适合可见区域。我试图用它来实现这一点, ((SVGSVGElement)doc.getElementById(some_id)).getBBox().getX()但你看我得到了什么。

4

1 回答 1

1

org.w3c.dom.Element是 DOM 架构中最低的接口之一,许多类都扩展了它,特别是SVGSVGElement.

您需要弄清楚返回什么类型doc.getElementById(some_id),然后根据该信息进行转换:

log.debug("Returned class is - " + doc.getElementById(some_id).getClass().getName();
//or
System.out.println("Returned class is - " + doc.getElementById(some_id).getClass().getName();

而最简单的方法是尝试直接在调试器中知道类型。

我知道的唯一情况是,这种类型似乎是正确的,但是发生了 ClassCastException:

  • 类加载器问题(当来自 2 个不同库的一个类被加载到 2 个不同的类加载器中时)
  • AOP 代理问题
于 2013-03-09T13:50:20.180 回答