2011-07-06 2 views
2

이 스키마가 있고 JAXB를 사용하여 Java 스텁 파일을 생성하고 있습니다.JAXB 바인딩 - List <T> 메서드의 반환 유형을 정의했습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:c="http://www.a.com/f/models/types/common" 
    targetNamespace="http://www.a.com/f/models/types/common" 
    elementFormDefault="qualified"> 

    <xs:complexType name="constants"> 
     <xs:sequence> 
      <xs:element name="constant" type="c:constant" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="constant"> 
     <xs:sequence> 
      <xs:element name="reference" type="c:reference"/> 
     </xs:sequence> 
     <xs:attribute name="name" use="required" type="xs:string"/> 
     <xs:attribute name="type" use="required" type="c:data-type"/> 
    </xs:complexType> 

는 기본 자바 패키지 이름은 'com.afmodels.types.common'

나는 또한 '상수'와 '상수'정의 패키지 'com.afmodel.common에 대한 기존의 인터페이스를 가지고있다 '어느 생성 된 클래스를 사용하려면. 내가 생성 된 클래스는 아래의 올바른 인터페이스

package com.a.f.models.types.common; 
.. 
@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "constants", propOrder = { 
    "constant" 
}) 
public class Constants 
    implements com.a.f.model.common.Constants 
{ 

    @XmlElement(required = true) 
    protected List<Constant> constant; 

    public List<Constant> getConstant() { 

그러나 반환 형식을 구현 않습니다 생성 된 자바 클래스 필요한 인터페이스

<jxb:bindings schemaLocation="./commonmodel.xsd" node="/xs:schema"> 
    <jxb:bindings node="xs:complexType[@name='constants']"> 
     <jxb:class/> 
     <inheritance:implements>com.a.f.model.common.Constants</inheritance:implements> 
    </jxb:bindings> 

을 구현하기 위해 파일을 바인딩 JAXB를 사용하고 있습니다 List <> getConstant() 메서드가 올바르지 않습니다. 이게 필요합니다

public List<com.a.f.model.common.Constant> getConstant() { 

jaxb 바인딩 파일을 통해이 작업을 수행 할 거리가 있습니까?

답변

2

나는 방법에 반환 형식이있는 JAXB 상수 기존의 인터페이스를 구현 않는 상수 클래스를 생성하기 때문에 자신의 반환 형식

package com.a.f.m.common; 

import java.util.List; 

public interface Constants { 

    public List<? extends Constant> getConstant(); 
} 

의 기존 인터페이스보다 유연하게 자바 제네릭을 사용하여이 문제를 해결했다 허용. JAXB 바인딩 파일을 사용하여 리턴 유형을 선언하는 것은 불가능합니다.

관련 문제