2

真剣に、私がこのようにキャストした場合:

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

動作しますが、試してみると

(SVGSVGElement)doc.getElementById(some_id)

キャスト エラーが発生しますが、getDocumentElement() と getElementById() の両方が同じタイプorg.w3c.dom.Elementを返します。私のグローバルな目標は、シーンをズームしてこの画像を作成するために、ファイルからロードされた svg シーン上の画像の X 座標を取得することです。見える範囲に収まります。私はそれを達成しようとしまし ((SVGSVGElement)doc.getElementById(some_id)).getBBox().getX()たが、私が得たものがわかります。

4

1 に答える 1

1

org.w3c.dom.ElementDOM アーキテクチャで最も低いインターフェイスの 1 つであり、多くのクラスがこれを拡張しています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 つの異なるライブラリーの 1 つのクラスが 2 つの異なるクラスローダーにロードされた場合)
  • AOP プロキシの問題
于 2013-03-09T13:50:20.180 に答える