0

Java で小さなデスクトップ アプリケーションを開発しています。XML ファイルからデータを読み取る必要があるポイントに遭遇しました。これは、Dom4j ライブラリを使用しているためです。コーディング中に次のエラーに直面しています。このエラーを解決するために誰かが私を導くことができます:

public void FromXML(String sXMLFileURI)
    {//Reads the XML File and Stroe Data in Calling Object
      Document document = getDocument( sXMLFileURI );
      String xPath = "myXpath";
      List<Node> nodes = document.selectNodes( xPath );//This line gives the followiing error:

//error "incompatible types
//required: java.util.List<org.dom4j.Node>
//found:    java.util.List<capture#1 of ? extends org.dom4j.Node>"
          for (Node node : nodes)
          {   
             //some processing here
          }
        }
4

2 に答える 2

5

これは、Java ジェネリック コレクションが「共変」ではないという事実の結果です。メソッド selectNodes() は、Node を実装するすべてのオブジェクトのリストを返します。しかし、これはList<Node>. 宣言を次のように変更する必要があります

List<? extends Node> nodes=...
于 2011-10-07T06:52:46.403 に答える
4

メソッドのシグネチャは

List<? extends Node> selectNodes(String)

変数nodesは typeList<? extends Node>ではなく、 type である必要がありますList<Node>

Aは、任意のインスタンスを要素としてList<Node>受け入れます。Node一方、 aList<? extends Node>List<Node>、または 、List<Element>または 、List<Attribute>または の他のサブクラスのリストですNode。あなたはどちらか分からないだけです。

于 2011-10-07T06:51:44.123 に答える