2011-10-07 6 views
0

Java에서 작은 데스크탑 응용 프로그램을 개발 중입니다. 내가 어디 XML 파일에서 데이터를 읽을 필요가 지점을 가로 질러 왔어, 내가 Dom4j 라이브러리를 사용하고 있습니다. 나는 다음과 같은 오류가 직면하고 코딩하는 동안 사람이 오류 해결에 나를 인도 할 수 : 메서드 서명 이후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

것은

List<? extends Node> selectNodes(String) 

당신의 변수 nodes이 아닌 유형 List<Node>의 입력 List<? extends Node>이어야한다 .

List<Node>은 요소로 Node 인스턴스를 허용합니다. List<? extends Node>List<Node> 또는 List<Element> 또는 List<Attribute>이거나 Node의 다른 하위 클래스 목록입니다. 당신은 단지 어느 것을 알지 못합니다.

5

자바 일반 콜렉션은 "공변"하지 않습니다. 메소드 selectNodes()는 Node를 구현하는 모든 객체의 목록을 반환합니다. 그러나 이것은 List<Node>이 아닙니다. 신고서를

List<? extends Node> nodes=... 
으로 변경해야합니다.
관련 문제